celeryd进程的数量是否取决于--concurrency设置?

时间:2012-08-01 09:07:36

标签: python concurrency celery celeryd

我们在Supervisor后面运行Celery并以

启动它
celeryd --events --loglevel=INFO --concurrency=2

但是,这会创建一个最多三层深度的流程图,最多包含7个芹菜进程(Supervisor会产生一个celeryd,产生其他几个,再次产生进程)。我们的机器有两个CPU核心。

所有这些流程都在处理任务吗?也许其中一些只是工人池? --concurrency设置如何与实际生成的进程数相关联?

1 个答案:

答案 0 :(得分:4)

如果--concurrency为2,则不应该有7个进程。

实际开始的过程是:

  • 主要的消费者流程

    代表工作到工作人员库

  • 工作人员池(这是--concurrency决定的数字)

这是3个并发为2的进程。

此外,还启动了一个用于清理信号量的非常轻量级的过程 如果启用了force_execv(默认情况下,我正在使用其他一些传输 比redis或rabbitmq)。

请注意,在某些情况下,流程列表还包含线程。 如果使用rabbitmq / redis以外的传输,worker可以启动多个线程, 包括一个始终启动的Mediator线程,除非启用CELERY_DISABLE_RATE_LIMITS