2017-07-18 72 views
1

如何爲多個應用程序使用同名的Celery隊列?與多個應用程序一起使用Celery隊列

我有具有N客戶端數據庫,這都需要在一個特定的隊列M.

對於每個客戶端數據庫芹菜任務處理的應用程序,我有一個單獨的芹菜工人我啓動等:

celery worker -A client1 -n [email protected]%h -P solo -Q long 
celery worker -A client2 -n [email protected]%h -P solo -Q long 
celery worker -A client3 -n [email protected]%h -P solo -Q long 

當我一次跑完所有的工作人員,並試圖啓動client1的任務時,我發現它似乎從未執行過。然後,除了第一個工人之外,我殺了所有的工人,現在第一個工人接受並執行任務。事實證明,即使每個工作人員的應用程序使用不同的BROKER_URL,使用相同的隊列也會導致他們竊取對方的任務。

這讓我感到驚訝,因爲如果我沒有指定-Q,這意味着Celery從「默認」隊列中拉出,這不會發生。

如何防止我的自定義隊列?唯一的解決方案是在隊列名稱中包含客戶端ID嗎?還是有更合適的解決方案?

回答

0

對於多個應用程序我使用不同的Redis數據庫等

redis://localhost:6379/0 
redis://localhost:6379/1 

相關問題