跳至主要內容
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?

4563博客

全新的繁體中文 WordPress 網站
  • 首頁
  • django celery 执行 ansible playbook yaml 问题
未分類
2020 年 5 月 19 日

django celery 执行 ansible playbook yaml 问题

django celery 执行 ansible playbook yaml 问题

資深大佬 : fanne 13

1 、封装 ansible playbook api 后,直接脚本调用,可以执行 yaml 任务。

https://i.imgur.com/cgCNruu.png

2 、在 django celery 进行异步任务时候,无法执行 yaml 任务

task 内容

https://i.imgur.com/MBi3goA.png

在 views.py 进行 task 调用

https://i.imgur.com/1lj6OUW.png

执行结果,为空

https://i.imgur.com/7k27yRN.png

现在无法定位到哪里问题,望各位大老指点。

大佬有話說 (21)

  • 資深大佬 : defunct9

    开 ssh,让我上去看看
    话说回来,貌似我都用 awx

  • 主 資深大佬 : fanne

    @defunct9 #1 awx 是 aws 云主机的吧,我这个就公司内网的机器

  • 資深大佬 : defunct9

    @fanne

  • 資深大佬 : defunct9

    @fanne AWX 是一个开源的 web 应用,并为 ansible 的任务引擎提供用户接口和 REST API 。它是 ansible Tower 的开源版本。

  • 資深大佬 : honmaple

    @fanne ansible 使用的是多进程模式,celery 里执行 ansible 需要设置 PYTHONOPTIMIZE=1,以前有遇到过,不知道是不是一样的问题

  • 資深大佬 : zhoudaiyu

    django celery 执行 ansible playbook yaml 问题
    我当时也是 celery+ ansible,后台任务执行有些问题,加上这个就好了,仅供参考

  • 主 資深大佬 : fanne

    @honmaple #5 是的,后面采用了这个环境变量后就 OK 了

  • 主 資深大佬 : fanne

    @zhoudaiyu #6 好的,我研究下看看

  • 主 資深大佬 : fanne

    @defunct9 #4 好吧,涨知识了

  • 資深大佬 : helloZwq

    @zhoudaiyu
    # 非常神奇的一句话
    current_process()._config = {‘semprefix’: ‘/mp’}
    我也是这么解决的 有大佬能分析下原因么

  • 資深大佬 : zhoudaiyu

    @helloZwq 好像是 celery 用的 multiprocess 和 ansible 里的一些东西有啥冲突

  • 主 資深大佬 : fanne

    @helloZwq #10
    @zhoudaiyu #6 current_process()._config = {‘semprefix’: ‘/mp’}
    固定语句么,哪里引入的这个函数的 current_process ()

  • 資深大佬 : zhoudaiyu

    @fanne from multiprocessing import current_process

  • 資深大佬 : wampyl

    问大家一个问题,如果想让 ansible 按照顺序执行任务(根据上一个任务的返回值来判断是否执行下一个任务)的话,是不是可以用 celery chain 啊

  • 主 資深大佬 : fanne

    @honmaple #5
    @zhoudaiyu #6

    另外请教大佬们一个问题,ansible 2.8 的 playbook api 关于 extra_vars

    我按照 2.7 的方式传递,

    “`bash
    def playbookrun(self,playbook_path,extra_vars=None):
    context.CLIARGS = ImmutableDict(self.options)
    if extra_vars:self.variable_manager.extra_vars = extra_vars ##<<===在这里传入
    pbex = PlaybookExecutor(playbooks=playbook_path,
    inventory=self.inventory,
    variable_manager=self.variable_manager,
    loader=self.loader,
    passwords=self.passwords)
    pbex._tqm._stdout_callback = self.pb_results_callback
    pbex.run()
    “`

    提示错误,找了一圈,没看到怎么传的

    “`
    if extra_vars:self.variable_manager.extra_vars = extra_vars
    AttributeError: can’t set attribute
    “`

  • 資深大佬 : zhoudaiyu

    @fanne 我用的 2.6 版本的 ansible

    from ansible.inventory.manager import InventoryManager

    variable_manager = VariableManager(loader=loader, inventory=inventory)
    variable_manager.extra_vars = self._evars #这里传入其他参数

  • 主 資深大佬 : fanne

    @zhoudaiyu #16
    ansible 2.8 的
    self.variable_manager._extra_vars = extra_vars
    这样 OK 了

    ansible 2.4 2.6 2.7 2.8,每一个版本都在改 api,也是醉了

  • 主 資深大佬 : fanne

    再咨询各位大佬一个问题,celery 进行异步执行时候,当改了 task 任务内容后,怎么使得 celery 自动生效的
    当前都是需要重启一下 celery 才生效的。

    @zhoudaiyu #6
    @honmaple #5
    @defunct9 #4

  • 資深大佬 : zhoudaiyu

    @fanne 改代码?

  • 主 資深大佬 : fanne

    @zhoudaiyu #19
    修改 @task 里面的内容。修改后要重启下 celery 方可生效。

  • 資深大佬 : zhoudaiyu

    @fanne 好像没有热加载的方法吧

文章導覽

上一篇文章
下一篇文章

AD

其他操作

  • 登入
  • 訂閱網站內容的資訊提供
  • 訂閱留言的資訊提供
  • WordPress.org 台灣繁體中文

51la

4563博客

全新的繁體中文 WordPress 網站
返回頂端
本站採用 WordPress 建置 | 佈景主題採用 GretaThemes 所設計的 Memory
4563博客
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?
在這裡新增小工具