如何重新启动芹菜Wroker由Supervisord运行

问题描述:

我使用supervisord运行芹菜生产。我的主管配置如下。如何重新启动芹菜Wroker由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 

我想问一下,怎样重启芹菜当工人在生产中我的代码库的变化?

+0

'supervisorctl restart celeryd'有什么问题? –

+0

我用'supervisorctl restart celeryd',但多次使用后,服务器速度变慢。当我检查公羊时,大部分公羊都被芹菜工人占用。有近15名工人在后台工作。 –

+2

我有同样的问题。 supervisord脚本中的参数'killasgroup = true'为我解决了它。 –

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

我已经开始使用的解决方案是告诉TERM的主进程,它会在工作完成后终止工作。所有工作人员完成后,主管将重新启动主流程。

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

这也是相关的。 Celery Production Graceful Restart

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

killasgroup =真