目前使用 /etc/init.d/celeryd 做守护进程
在实践中遇到一些问题:
django 项目, celery == 3.1.12
更新代码后需要重启 worker 来加载新代码
但是 /etc/init.d/celeryd 脚本只可以用 root 执行,每次更新代码都切到 root 感觉这样不合理,但是 google 了很久没有找到合适的方法
尝试的方法:
--autoreload ,
启动参数加 autoreload ,按照文档上的说法会重新加载 tasks 文件的,但是并没有看到效果kill -HUP :
对主进程 pid 用 HUP ,会退出程序。对子进程使用 HUP ,倒是正常重启,但是多个进程操作起来麻烦celery multi :
使用 celery multi 启动 worker ,可以使用 celery multi 来重启,不需要 root 权限,但是在实践中不论是启动还是重新,都需要加一串参数。
写成脚本可能比较方便,没有更好的方式办法的话,会选择这个supervisord :
下一步尝试这个,没有用过 supervisord ,只知道进程挂掉的时候他可以让进程重新跑起来。打算在更新代码之后 kill 掉 worker 主进程,然后由 supervisord 启动
请教大家在实践中:
有什么比较好,比较方便的方式来管理 celery ,尤其是更新代码之后加载新代码
像 uwsgi 的 kill -HUP 就很方便