繁体   English   中英

用celery部署Django项目

[英]Deploy django project with celery

部署django项目后,我需要的只是touch uwsgi_touch文件。 uwsgi将正常重启其工作人员。 但是芹菜呢? 现在,当celery任务的代码库更改时,我只是手动重新启动celery。 但是,即使我手动执行此操作,也仍然无法确定我不会杀死芹菜任务。

有什么办法吗?

管理芹菜工人的更好方法是使用supervisor

$ pip install supervisor
$ cd /path/to/your/project
$ echo_supervisord_conf > supervisord.conf

将它们添加到您的supervisord.conf文件

[program:celeryworker]
command=/path/to/celery worker -A yourapp -l info 
stdout_logfile=/path/to/your/logs/celeryd.log
stderr_logfile=/path/to/your/logs/celeryd.log

现在开始主管supervisord命令将在终端和使用supervisorctl管理过程。

要重启,你可以做

$ supervisorctl restart celeryworker

我在celery常见问题解答中找到了答案http://docs.celeryproject.org/en/2.2/faq.html#how-do-i-shut-down-celeryd-safely

使用TERM信号,该工作人员将完成所有当前正在执行的作业并尽快关闭。 不应丢失任何任务。

除非您已经尝试过TERM几次并等待了几分钟,让它有机会关闭,否则您永远不要以KILL信号(-9)停止芹菜。 好像您执行的任务可能在执行过程中终止,并且除非您设置了acks_late选项(Task.acks_late / CELERY_ACKS_LATE),否则它们将不会重新运行。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM