2013-08-19 37 views
5

有人能告訴我芹菜是在線程還是在單獨的子進程中執行任務嗎?該文檔似乎沒有解釋它(讀取它像3次)。如果它是一個線程,它是如何通過GIL(特別是通知誰以及如何通知事件的)?芹菜的apply_async線程或進程?

你會如何比較芹菜的異步與Twisted的反應堆模型?畢竟芹菜是使用反應堆模型?

感謝,

回答

2

-c和-P是芹菜工人併發相關的選項。

 
    -c CONCURRENCY, --concurrency=CONCURRENCY 
         Number of child processes processing the queue. The 
         default is the number of CPUs available on your 
         system. 
    -P POOL_CLS, --pool=POOL_CLS 
         Pool implementation: processes (default), eventlet, 
         gevent, solo or threads. 

使用eventlet: http://docs.celeryproject.org/en/latest/userguide/concurrency/eventlet.html#enabling-eventlet

http://docs.celeryproject.org/en/latest/internals/reference/celery.concurrency.processes.html

3

誰能告訴我是否芹菜在一個線程中或在 單獨的子進程來執行任務?

這兩個任務都不會在單獨的進程中執行,可能在不同的機器上執行。這不是你稱之爲「延遲」的線程的子進程。 -C和-P選項控制工作進程如何管理它自己的線程。工作進程通過一個完全獨立的消息服務來獲取任務。

如何將芹菜的異步與Twisted的反應堆模型進行比較?畢竟,使用反應堆模型的芹菜是 ?

Twisted是一個事件隊列。它是異步的,但不是爲並行處理而設計的。