2012-10-17 60 views
3

我使用Django Celery和一個RabbitMQ後端,全部託管在Heroku上。Celery在RabbitMQ上創建多個隊列 - 非默認隊列沒有使用者

從芹菜文檔中可以明顯看出,芹菜的設計是爲了創建新的任務隊列。我的問題是,當我進入我的RabbitMQ控制檯時,我發現只有默認隊列有任何使用者(celeryd實例)與之連接。結果是,非默認隊列上的所有任務都不會運行。

由於芹菜文檔明確指出,芹菜應該創造許多隊列,我覺得我必須在我的配置丟失一些非常基本的東西。儘管如此,我無法讓消費者「跳過」並尋找非空隊列 - 他們只是留在空的默認隊列中。

關於如何解決這個問題的任何想法?

謝謝!

+0

你可以發佈你的芹菜conf? – mossplix

+0

'跳來跳去'並尋找非空隊列?這是如何工作的:)你必須指定工作人員使用-Q命令行選項消耗什麼隊列(或使用add_consumer遠程控制命令) – asksol

回答

0

我一直有和你一樣的問題,但深入研究文檔我認爲會發生的是,即使Queue是自動創建的,你仍然需要明確告訴你的芹菜工人從新開始消費創建隊列。

根據文檔,工作人員顯式綁定到一個或多個隊列。也就是說,如果您在啓動worker時未指定-Q參數,則它將被綁定到「默認」隊列,另一方面,如果您爲-Q參數提供值,那麼它將被綁定到您提供的那些特定隊列。我理解這意味着您不能將工作人員綁定到「未定義」隊列(或稍後將創建的隊列)。

從文檔: http://docs.celeryproject.org/en/latest/userguide/workers.html#queues

看來,讓您的工作人員開始從新建的隊列消耗,你可以發送郵件給他們(在運行時)這樣做使用add_consumer()方法。