在Django部署期间重新启动celery beat和worker

时间:2018-01-30 22:53:06

标签: python django celery

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

我正在和Django一起运行gunicorn + celery + rabbitmq。

这是我创建节拍和工作人员的配置

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 个答案:

答案 0 :(得分:1)

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

您还可以确认重启后是否有预期的工人数量?

答案 1 :(得分:1)

您为每个部署启动了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