【发布时间】:2010-12-24 12:05:17
【问题描述】:
我正在使用守护进程运行 Celery 2 - http://ask.github.com/celery/cookbook/daemonizing.html 和 RabbitMQ。 不时发生无声崩溃,我在 celeryd.log 中看到的唯一内容:
[2010-12-24 14:14:31,323: INFO/PoolWorker-1414] process shutting down
[2010-12-24 14:14:31,323: INFO/PoolWorker-1414] process exiting with exitcode 0
[2010-12-24 14:14:31,331: INFO/PoolWorker-1415] child process calling self.run()
[2010-12-24 14:14:48,673: INFO/MainProcess] Got task from broker: airsale.search.xxx.get_search_results[01bf5d36-7c0e-4f8a-af69-750ef1b24abc]
[2010-12-24 14:14:48,761: INFO/MainProcess] Got task from broker: airsale.search.xxx.get_search_results[2d5f9952-d493-4de4-9752-0eee1776147d]
[2010-12-24 14:14:48,861: INFO/MainProcess] Got task from broker: airsale.search.xxx.get_search_results[0c77c1ec-df6c-4e34-875c-44909fbf8b9f]
[2010-12-24 14:14:48,961: INFO/MainProcess] Got task from broker: airsale.search.xxx.get_search_results[3d83dd54-0be8-4cf9-9cd6-81e070d97170]
[2010-12-24 14:14:49,061: INFO/MainProcess] Got task from broker: airsale.search.xxx.get_search_results[2dd29e70-e085-4fd1-a7ef-12d06b21644c]
..........
然后 - 只有“从代理获得任务”,没有任何任务处理。
ps -C celeryd 显示 - celery 节点正在运行。
如果我这样做:/etc/init.d/celeryd restart - celeryd 进程的数量翻倍。似乎旧进程不再受守护进程控制。
- 如何检测 - 为什么任务处理不执行,即使任务是从代理收到的?
- 为什么旧的 celeryd 进程不会被
/etc/init.d/celeryd restart杀死?
【问题讨论】:
-
它说 PoolWorker-1415,这意味着 1415 个进程必须已经启动(并且可能稍后停止)。你配置了多少个worker? celery 相关的配置设置是什么?另外,如果不运行守护进程,它是否有效?