用芹菜部署django项目

时间:2015-02-21 06:44:20

标签: python celery django-celery

在部署我的django项目后,我只需要 touch uwsgi_touch 文件。 uwsgi将优雅地重新启动其工作人员。但芹菜怎么样?现在我只是在改变芹菜任务的代码库时手动重启celery。但即使我手动完成,我仍然不能确定我不会杀死芹菜任务。

任何解决方案?

2 个答案:

答案 0 :(得分:1)

管理芹菜工人的更好方法是使用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

答案 1 :(得分:0)

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

  

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

     

你应该永远不要用KILL信号(-9)停止芹菜,除非你这样做   尝试了几次TERM并等了几分钟让它有机会   去关机。好像你做任务可能会在执行中被终止,并且   除非您设置了acks_late选项,否则它们不会重新运行   (Task.acks_late / CELERY_ACKS_LATE)。