如何重新启动由Supervisord运行的Celery Worker

问题描述 投票:3回答:2

我正在使用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

我想问一下,当我的代码库在生产中发生变化时,如何重新启动芹菜工作者?

python django celery django-celery supervisord
2个回答
1
投票

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

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

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

这也是相关的。 Celery Production Graceful Restart


1
投票

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

killasgroup =真

© www.soinside.com 2019 - 2024. All rights reserved.