python 隊列,python分組和任務分配_python-使用Celery在多個隊列中公平分配任務

 2023-12-10 阅读 27 评论 0

摘要:我正在為任務排隊工作流評估芹菜.我的要求有些特殊.該系統具有項目的概念,每個項目將具有與其關聯的(可能很多)任務.我希望排隊系統以公平的方式分派這些任務,因為一個有很多任務要處理的項目不會使其他項目餓死.例如,假設ProjectA有100個與之關聯的任務,并且所有這些任務都同

我正在為任務排隊工作流評估芹菜.我的要求有些特殊.該系統具有項目的概念,每個項目將具有與其關聯的(可能很多)任務.我希望排隊系統以公平的方式分派這些任務,因為一個有很多任務要處理的項目不會使其他項目餓死.

例如,假設ProjectA有100個與之關聯的任務,并且所有這些任務都同時提交.前5項任務被取消并提交給5名工人.在處理前5個任務時,將與另外100個任務一起提交ProjectB. ProjectB不必等待ProjectA完成其所有100個任務即可獲得一些處理時間.相反,一旦工作者有空,便應處理ProjectB任務.然后,下一個有空的工作人員應以循環方式處理ProjectA任務,依此類推.

我的想法是,我可以為每個項目動態創建新隊列,并讓所有工作人員從所有隊列中撤出,如this SO post中所述.但是,根據this answer,芹菜工人實際上將按照提交的順序處理任務,無論將他們排在隊列中(我也覺得有點奇怪).這對我不起作用,因為這會導致當前正在處理的項目提交之后的項目餓死.

芹菜可以用來滿足我的要求嗎?如果沒有,是否存在建議的最佳實踐來實現我的要求?

解決方法:

python 隊列?根據我的測試,芹菜可以用來滿足您的要求,因為隊列以循環方式進行處理.在other SO post you referenced中查看我的答案.

根據需要對ProjectB任務進行響應的速度,您可能需要調整PREFETCH_MULTIPLIER的值.我相信默認值為4,據我了解,這意味著您的芹菜工作者從隊列中以4個批次提取物品(更多信息,請參閱this SO post).因此,如果您有很多工作人員,即使尚未處理ProjectA隊列中的許多項目,即使它們尚未被處理,您的ProjectB物料也將排在所有這些項目之后保留.

標簽:celery,rabbitmq,python

版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。

原文链接:https://hbdhgg.com/5/194292.html

发表评论:

本站为非赢利网站,部分文章来源或改编自互联网及其他公众平台,主要目的在于分享信息,版权归原作者所有,内容仅供读者参考,如有侵权请联系我们删除!

Copyright © 2022 匯編語言學習筆記 Inc. 保留所有权利。

底部版权信息