簡體   English   中英

Celery 分發隊列和工作線程

[英]Celery distributing Queues and Workers

我是 Celery 的新手,我試圖了解隊列的工作原理。 如果我有兩個任務,比如 task1 和 task2,我把它們放在不同的隊列中,在 task1 上我只使用一個工作人員,而在 task2 上我使用多個工作,那么 task1 一次只運行一個,因為我只有一個工作人員? 任務 2 的運行次數與我擁有的工人一樣多嗎? 我的理解正確嗎?

你很近。 您可以將任務分配到特定隊列並將工作人員配置為僅偵聽特定隊列並獨立擴展偵聽每個隊列的工作人員數量。 一般來說,更多的工人意味着更多的任務可以同時執行。

但是,僅將單個工作器分配給特定隊列/任務並不能保證該任務一次只執行一個。
默認情況下,worker 啟用了並發,這意味着單個 worker 可以利用多個進程並發執行任務。 此外,還有其他工作設置需要考慮,例如預取和早期確認。

如果要確保一次只能執行一項任務,則不應依賴(缺乏)工作進程的可用性。 相反,文檔中描述的鎖定機制確保一次執行一個任務將是一種推薦的方法。

task2執行次數不會與該隊列中的工作人員一樣多,此任務將分配給當時可用的工作人員之一。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM