Python 用芹菜部署django项目

Python 用芹菜部署django项目,python,celery,django-celery,Python,Celery,Django Celery,在部署django项目之后,我所需要的就是touch-uwsgi\u-touch文件。uwsgi将优雅地重新启动其工作人员。但是芹菜呢?现在,当芹菜任务的代码库发生更改时,我只需手动重新启动芹菜。但即使我手动操作,我仍然不能确定我不会杀死芹菜 有什么解决方案吗?管理芹菜工人的更好方法是使用主管 $ pip install supervisor $ cd /path/to/your/project $ echo_supervisord_conf > supervisord.conf 将这些

在部署django项目之后,我所需要的就是touch-uwsgi\u-touch文件。uwsgi将优雅地重新启动其工作人员。但是芹菜呢?现在,当芹菜任务的代码库发生更改时,我只需手动重新启动芹菜。但即使我手动操作,我仍然不能确定我不会杀死芹菜


有什么解决方案吗?

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

$ 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
现在,在终端中使用
supervisorORD
命令启动supervisor,并使用
supervisorctl
管理流程

要重新启动,您可以执行以下操作

$ supervisorctl restart celeryworker

我在芹菜常见问题中找到了答案

使用术语信号,工人将完成当前所有任务 正在执行作业并尽快关闭。不应删除任何任务 迷路了

你不应该用杀戮信号(-9)来阻止celeryd,除非你 试了几次,等了几分钟,让它有机会 关闭。就好像你做的一样,任务可能会在执行过程中终止,并且 除非您设置了acks_late选项,否则不会重新运行它们 (Task.acks\u late/芹菜acks\u late)


是的,谢谢你的回答。我们已经为此使用了supervisor。但问题有点不同。我不知道如何安全地部署我们产品的新版本。如果我理解正确的话,如果芹菜任务被更改(任务代码被更改),芹菜工人和位调度器需要重新启动。若我在重启芹菜的同时,杀死了芹菜生产中处理某些任务的工人,那个就太糟糕了。