Zac*_*ach 6 django celery django-celery celeryd
我正在运行celeryd作为守护进程,但我有时无法优雅地停止它.当我发送TERM信号并且队列中有项目时(在这种情况下service celeryd stop),celeryd将停止接受新的工作,并关闭所有工作进程.但是,父进程不会关闭.
我刚刚碰到了一个场景,我在两台独立的工作机器上运行celeryd:A和B.在RabbitMQ服务器上有大约1000条消息,我关闭了A,并且遇到了我上面解释过的情况.B继续工作,但随后在服务器上留下了大约40条消息.然而,我能够正确地阻止B.
我重新启动了B,看看是否会将40个项目从队列中删除,但事实并非如此.接下来,我很难杀死A,之后B抓住并完成了任务.
我的结论是父进程已经为我的RabbitMQ服务器保留了40个子项.它将正确收割孩子,但除非我手动杀死它,否则不会将项目释放回RabbitMQ.
有没有人经历类似的事情?
我正在运行Celery 2.2.2
我相信这与:
https://github.com/celery/celery/issues/264
环境
CELERY_DISABLE_RATE_LIMITS = False
Run Code Online (Sandbox Code Playgroud)
在你的settings.py 文件中应该可以工作。
| 归档时间: |
|
| 查看次数: |
1403 次 |
| 最近记录: |