2
您如何確保芹菜只能作爲一個流程運行?當我運行manage.py celeryd --concurrency=1
然後ps aux | grep celery
我看到3個正在運行的實例:Celeryd推出過多的流程
www-data 8609 0.0 0.0 20744 1572 ? S 13:42 0:00 python manage.py celeryd --concurrency=1
www-data 8625 0.0 1.7 325916 71372 ? S 13:42 0:01 python manage.py celeryd --concurrency=1
www-data 8768 0.0 1.5 401460 64024 ? S 13:42 0:00 python manage.py celeryd --concurrency=1
我注意到有celerybeat,它總是運行作爲2個處理類似的問題。
如何/你在哪裏調用'python manager.py celeryd ...'?不知道這是否可能是問題,但如果你是django運行在apache後面,並且apache運行在多進程模式下,那麼每個apache進程可能會啓動它自己的celeryd。 – mklauber
@mklauber,我使用命令'python manage.py celeryd --concurrency = 1'通過supervisord調用它。 – Cerin
它看起來像有n + 1個進程,因爲Celery啓動一個主進程和幾個工作進程。因此,您預計會看到celerybeat,但隨後使用--concurrency = 1,您仍然應該看到2個工作進程,而不是3.您使用的是哪種版本的Celery? Celery 3.0.19結束了我的問題。另外,Celery會告訴你「concurrency:1(processes)」在stdout的某處嗎? –