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嗎?還是有更合適的解決方案?