如何重新启动芹菜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
我想问一下,怎样重启芹菜当工人在生产中我的代码库的变化?
答
主要的问题我遇到的是,如果你告诉上司killasgroup这将导致数据丢失长时间运行的任务可能会被杀掉。
我已经开始使用的解决方案是告诉TERM的主进程,它会在工作完成后终止工作。所有工作人员完成后,主管将重新启动主流程。
ps aux | grep celery.*MainProcess | awk '{print $2}' | xargs kill -TERM
答
在主管文件中添加以下内容并重新启动主管。
killasgroup =真
'supervisorctl restart celeryd'有什么问题? –
我用'supervisorctl restart celeryd',但多次使用后,服务器速度变慢。当我检查公羊时,大部分公羊都被芹菜工人占用。有近15名工人在后台工作。 –
我有同样的问题。 supervisord脚本中的参数'killasgroup = true'为我解决了它。 –