如何在芹菜中远程启动/重启工人?

时间:2015-09-23 09:37:26

标签: celery restart worker

有一个具有不同计算机的集群,每个计算机都有一个指定路径(~/celery_node/)中的项目代码。最初,集群中没有正在运行的芹菜工人。

问题#1:  如何在不登录任何机器的情况下在每台机器上启动一些芹菜工人,或者只是登录一台并在其他机器上启动芹菜工人?

问题2:如果每台机器已经启动了一些芹菜工人,如何在不远程登录的情况下重新启动它们?

3 个答案:

答案 0 :(得分:0)

您可以使用fabric执行远程操作

from fabric.api import run

def host_type():
    run('service celery start')

定义任务后,它可以在一个或多个服务器上运行,如下所示:

$ fab -H localhost,linuxbox restart celery
[localhost] run: service celery start
[localhost] out: celery started/running
[linuxbox] run: service celery start
[linuxbox] out: celery started/running

Done.
Disconnecting from localhost... done.
Disconnecting from linuxbox... done.

答案 1 :(得分:0)

看看花 https://github.com/mher/flower 它允许很多管理类型的工作

答案 2 :(得分:0)

另外还有autoreload标志:

  

使用--autoreload选项启动celery worker将使worker能够监视对导入的所有导入任务模块的文件系统更改(以及添加到CELERY_IMPORTS设置或-I | --include选项的任何非任务模块) )。

     

这是一个仅用于开发的实验性功能,不鼓励在生产中使用自动重载,因为在Python中重新加载模块的行为未定义,并且可能导致难以诊断错误和崩溃。 Celery使用与在例如自动重新加载器中找到的相同的方法。 Django runserver命令。