2016-04-26 117 views
1

我已經劃分芹菜放入以下幾個部分關於芹菜蟒蛇

  1. 芹菜
  2. 芹菜工人
  3. 芹菜守護
  4. 經紀人有些困惑
  5. 芹菜顯示器(花)

我的理解

  1. 當我打芹菜任務在Django E,G tasks.add(1,2)。然後芹菜將該任務添加到隊列中。我很困惑,如果那是4或5上面所列內容
  2. 當任務去然後排隊的工人獲取任務,並從隊列中刪除
  3. 該任務的結果保存在結果後端

我的困惑

  1. 請告訴我守護的芹菜和芹菜工人之間的差異
  2. 是RabbitMQ的做隊列的工作。這是否意味着任務可以保存在Rabitmq或SQS中
  3. 花做什麼。它是否監視工作人員或任務或隊列或解析

回答

0

首先,解釋它是如何工作的。您的代碼中運行了一個芹菜客戶端。您致電tasks.add(1,2)並創建新的Celery Task。該任務由Broker轉移到隊列中。是的,隊列是堅持在Rabbimq或SQS。 Celery Daemon始終在運行並正在偵聽新任務。當隊列中有新任務時,它會啓動新的Celery Worker來執行該工作。

回答您的問題:

  1. 芹菜守護進程始終運行和它的開始芹菜工人。

  2. 是Rabitmq或SQS正在做一個隊列的工作。

  3. 隨着芹菜監視器可以監視多少任務正在運行,有多少人完成的,什麼是隊列的大小等

0

我覺得從nstoitsev答案有良好的意願,但造成一些混亂。所以我們試着澄清一下。

  • Celery worker是執行 任務,當被配置成在背景比通常被稱爲 芹菜守護程序運行的過程芹菜RESPONSABLE。所以你可以考慮這兩件事情是一回事。 爲了澄清他對nstoitsev的回答的困惑,每個worker可以有一個大於1的併發參數。當這種情況發生時,每個celery worker都可以創建N child worker直到達到併發參數來執行任務平行,這通常也被稱爲工人。
  • 代理持有隊列和交換意味着celery worker能夠使用名爲AMQP的協議連接到代理併發布或使用消息。
  • 花能夠使用經紀人本身監控芹菜羣集。基本上有能力來自所有工人的receive events。如果你有結果後端禁用,那麼btw是默認行爲,芹菜Celery result backend也適用於花卉。

希望這會有所幫助。

+0

可以手動重試失敗的任務或將失敗的任務移動到另一個隊列稍後重新登錄 – Karl

+0

嗨,這將是另一個問題,堆棧溢出規則明確表明不使用註釋作爲聊天。無論如何,這個文檔頁面可以幫助你的問題。 http://docs.celeryproject.org/en/latest/userguide/calling.html?highlight=retry#retry-policy –