python分组和任务分配_python-使用Celery在多个队列中公平分配任务

我正在为任务排队工作流评估芹菜.我的要求有些特殊.该系统具有项目的概念,每个项目将具有与其关联的(可能很多)任务.我希望排队系统以公平的方式分派这些任务,因为一个有很多任务要处理的项目不会使其他项目饿死.

例如,假设ProjectA有100个与之关联的任务,并且所有这些任务都同时提交.前5项任务被取消并提交给5名工人.在处理前5个任务时,将与另外100个任务一起提交ProjectB. ProjectB不必等待ProjectA完成其所有100个任务即可获得一些处理时间.相反,一旦工作者有空,便应处理ProjectB任务.然后,下一个有空的工作人员应以循环方式处理ProjectA任务,依此类推.

我的想法是,我可以为每个项目动态创建新队列,并让所有工作人员从所有队列中撤出,如this SO post中所述.但是,根据this answer,芹菜工人实际上将按照提交的顺序处理任务,无论将他们排在队列中(我也觉得有点奇怪).这对我不起作用,因为这会导致当前正在处理的项目提交之后的项目饿死.

芹菜可以用来满足我的要求吗?如果没有,是否存在建议的最佳实践来实现我的要求?

解决方法:

根据我的测试,芹菜可以用来满足您的要求,因为队列以循环方式进行处理.在other SO post you referenced中查看我的答案.

根据需要对ProjectB任务进行响应的速度,您可能需要调整PREFETCH_MULTIPLIER的值.我相信默认值为4,据我了解,这意味着您的芹菜工作者从队列中以4个批次提取物品(更多信息,请参阅this SO post).因此,如果您有很多工作人员,即使尚未处理ProjectA队列中的许多项目,即使它们尚未被处理,您的ProjectB物料也将排在所有这些项目之后保留.

标签:celery,rabbitmq,python

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值