为什么我的芹菜工人会处理所有连续处理?

时间:2014-09-30 05:22:06

标签: celery task-queue

我在AWS c3.xlarge(4核心机器)上运行多个芹菜工作进程。有一批"批次"工作进程的--concurrency参数设置为2,优先级为"将--concurrency参数设置为1的进程。两个工作进程都从同一优先级队列中进行绘制。我使用Mongo作为我的经纪人。当我将多个作业提交到优先级队列时,即使多个工作人员可用,它们也会一个接一个地连续处理。所有项目均由" priority"处理。过程,但如果我停止"优先"过程,"批次"进程将处理所有事情(仍然是连续的)。我可以错误地配置什么来阻止芹菜异步处理作业?

编辑:事实证明同步瓶颈在服务器中提交作业而不是芹菜。

1 个答案:

答案 0 :(得分:1)

默认情况下,工作人员将预取4 * concurrency number个任务来执行,这意味着您的第一个正在运行的工作人员正在预取4个任务,因此如果您排队4个或更少的任务,他们将全部由该工作人员单独处理,并且队列中不会有任何其他消息被第二个工作者使用。

你应该将CELERYD_PREFETCH_MULTIPLIER设置为最适合你的号码,之前我遇到过这个问题,并将此选项设置为1,现在我的所有任务都被工人完全消耗了。