我用芹菜3.1.23。
任务代码非常简单:
@app.task(bind=True, max_retries=None, default_retry_delay=settings.CELERY_RECONNECT_TIME)
def analize_text(self, **kwargs):
print 'test'
return 1
我启动芹菜这个命令:
celery -A tasks worker——loglevel=info——concurrency=4 -n analize_textq分析。analize_text -Ofair
所以,我使用4个CPU。问题是,芹菜会周期性地杀死工人,然后开始新的工作。新工人在日志中有新的编号和新的PID。这是我的日志https://dpaste.de/N1Vk
它为什么这样做?这是虫子吗?
它取决于CELERY_MAX_TASKS_PER_CHILD,即一个worker在被回收之前应该完成的任务数,默认值是没有限制的。
http://docs.celeryproject.org/en/latest/configuration.html std: setting-CELERYD_MAX_TASKS_PER_CHILD
因此,您的芹菜配置可能将此限制设置为某个较低的数字,因此您的工人被循环使用。您可以在芹菜统计中查看更多信息。