2012-08-01 16 views
6

我们正在运行芹菜背后监事和与芹菜进程的数量是否取决于 - 并发设置?

celeryd --events --loglevel=INFO --concurrency=2 

这启动它,但是,创建一个过程图是高达三层深,包含多达7个celeryd过程(监会生成一个celeryd,其产卵数其他,再次产生进程)。我们的机器有两个CPU内核。

所有这些过程都在处理任务吗?也许他们中的一些人只是工作人员池?如何将--concurrency设置连接到实际生成的进程数?

回答

4

你不应该有7个处理,如果--concurrency为2

开始实际过程是:

  • 主要消费过程

    代表工作的工人池

  • 工作人员池(这是--concurrency决定的号码)

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

此外,如果force_execv启用(这是我你使用的是其他运输 比redis的或RabbitMQ的默认),用于清理信号灯一款非常轻便的过程开始 。

请注意,在某些情况下,进程列表还包含线程。 如果使用除rabbitmq/redis之外的其他传输, 包括一个始终启动的中介线程,除非CELERY_DISABLE_RATE_LIMITS已启用,否则工作人员可能启动多个线程。

+0

这与我的经验不符。我有'--concurrency = 1 --beat',但是产生了4个芹菜过程。 – Cerin 2013-06-12 15:38:43

+0

我使用'DatabaseTransport'和Celery 3.0,并且'--concurrencry = 1'我得到6个进程,类似于OP的情况。 – 2014-03-20 12:08:43

+0

@asksol当--concurrency = 1并且有两个工人时,我也会遇到4个芹菜过程。我很好奇,为什么,非常感谢。 – fpghost 2017-04-27 20:26:18