2012-08-01 21 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