Supervisord 如何重启 Celery Worker 运行

How to Restart Celery Wroker ran by 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?

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

killasgroup=true

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

我已经开始使用的解决方案是将主进程告诉 TERM,这将在工作人员完成任务时将其杀死。 supervisor 将在所有 worker 完成后重新启动主进程。

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

这也有关系。