优先考虑芹菜队列/任务

问题描述 投票:2回答:1

我对芹菜的基本了解及其运作方式。在我目前的项目中,我遇到了确定任务优先级的需求。我的意思是,如果在芹菜队列中有两种任务,比如A和B,芹菜应该优先考虑任务B,而不管队列的头部是哪个任务。有没有办法做到这一点?

队列优先级对我来说也没问题。这意味着我可以创建2个不同的队列,比如high_priority_queue和low_priority_queue,而celery应该首先执行high_priority_queue中的任务,然后转向low_priority_queue。

我也知道我们可以将不同的工作者分配给两个队列,但这意味着两个队列中的任务正在同时执行。我需要首先执行high_priority_queue中的任务。有任何想法吗?

谢谢

python python-3.x celery
1个回答
1
投票

通常建议使用多个队列的多工作方法,但正如您所指出的,低优先级队列/工作者将同时在高优先级工作者旁边工作。如果您希望很快执行许多小任务,这是一个有趣的设置,因此您将它们放在高优先级队列中,而较长的任务被推送到低优先级队列。您还可以设置一个设置,您只需向高优先级工作人员提供更多资源(或更好的机器)。

既然你想要一个不同的解决方案,我将为priority建议apply_async参数。你确实需要一些设置,如a different question I answered recently所指出,它只适用于某些经纪人。 (对于RabbitMQ,它从版本3.5.0开始工作。)在您的队列中设置x-max-priority并在引用的答案中指出的其他设置之后,您可以简单地将优先级放在这样的任务上:

your_task.apply_async(queue="your_queue_that_can_handle_priority", priority=10)
© www.soinside.com 2019 - 2024. All rights reserved.