芹菜工人没有消耗足够的任务

use*_*323 3 python rabbitmq celery

我和Celery有一个奇怪的问题.

我使用RabbitMQ作为消息代理和结果后端.

任务通过pickle序列化,但它们只获取数据库中文件的id.他们获取它,对它做一些工作并将结果写回数据库.我只是将id存储在结果后端.

我使用一个组来提供任务,并且不从其中运行任何子任务.

我有一个并发= 8的工人(prefork)

如果我启动任务,则所有8个进程都在工作(100%cpu使用率).

第一个任务完成后,奇怪的行为就开始了.该过程不会开始新任务.任务get初始化(我使用CELERYD_MAX_TASKS_PER_CHILD = 1)但是不会调用run方法.

所以问题是,并非所有流程都在运行.

尝试了许多配置设置但没有改变此行为.

你有什么主意吗?

它不是数据库等.本地运行消息代理和数据库.还看了一下有花的工人,它说大部分时间大约有4个过程都是活跃的.其他任务是保留的,但不要启动.

希望你能帮助我!

use*_*323 12

终于想通了:

这只是我必须放置然后启动工人的一个选项.

使用-Ofair选项启动worker就可以了!

请参阅:http: //docs.celeryproject.org/en/latest/userguide/optimizing.html#prefork-pool-prefetch-settings

谢谢你的帮助 :)