如何重启Celery Wroker由Supervisord运行

时间:2017-10-18 06:55:14

标签: python django celery django-celery supervisord

我正在使用supervisord生产芹菜。我的主管配置如下。

[program:celeryd]
command=%(ENV_PROJECT_PATH)s/scripts/celery_worker.sh
stdout_logfile=%(ENV_PROJECT_PATH)s/celeryd.log
stderr_logfile=%(ENV_PROJECT_PATH)s/celeryd.log
autostart=true
autorestart=true
startsecs=10
stopwaitsecs=1000
priority=1000

我操作芹菜工人的命令是

celery_path=$(which celery)
$celery_path -A Project_Name worker --loglevel=info

我想问一下,当我的代码库在生产中发生变化时,如何重启celery worker?

2 个答案:

答案 0 :(得分:1)

在超级用户文件中添加以下内容并重新启动主管。

  

killasgroup =真

答案 1 :(得分:1)

我遇到的主要问题是,如果你告诉主管killasgroup会导致数据丢失,长时间运行的任务可能会被杀死。

我转而使用的解决方案是将主进程告诉TERM,它将在完成任务时终止工作人员。在所有工人完成后,主管将重新启动主要流程。

ps aux | grep celery.*MainProcess | awk '{print $2}' | xargs kill -TERM

这也是相关的。 Celery Production Graceful Restart