在 Django 部署期间重新启动芹菜节拍和工作线程



我正在使用celery==4.1.0django-celery-beat==1.1.0

我正在用 Django 运行 gunicorn + 芹菜 + 兔子。

这是我用于创建节拍和工人的配置

celery -A myproject beat -l info -f /var/log/celery/celery.log --detach
celery -A myproject worker -l info -f /var/log/celery/celery.log --detach

在 Django 部署期间,我正在执行以下操作:

rm -f celerybeat.pid
rm -f celeryd.pid
celery -A myproject beat -l info -f /var/log/celery/celery.log --detach
celery -A myproject worker -l info -f /var/log/celery/celery.log --detach
service nginx restart
service gunicorn stop
sleep 1
service gunicorn start

我想重新启动芹菜节拍和工人,似乎这个逻辑有效。但我注意到芹菜在部署过程中开始使用越来越多的内存,经过几次部署后,我的内存使用率达到了 100%。我尝试了不同的服务器设置,似乎不相关。

您为每个部署启动 2 个新工作线程,而不会停止/杀死以前的工作线程。

在部署期间,使用

kill -9 $PID
kill -9 `cat /var/run/myProcess.pid`

或者,你可以用

pkill -9 celery

现在,您可以像往常一样启动工作线程。

celery -A myproject beat -l info -f /var/log/celery/celery.log --detach
celery -A myproject worker -l info -f /var/log/celery/celery.log --detach

rabbitmq 可能是高内存使用率的罪魁祸首。你能安全地重新启动兔子吗?

您还能确认重新启动后是否有预期的辅助角色数量吗?

最新更新