gpt4 book ai didi

python - 优先考虑 celery 队列/任务

转载 作者:太空宇宙 更新时间:2023-11-04 04:51:58 26 4
gpt4 key购买 nike

我对 celery 及其工作原理有基本的了解。在我当前的项目中,我遇到了对任务进行优先排序的需求。我的意思是,如果有两种任务,比如 celery 队列中的 A 和 B,那么 celery 应该优先考虑任务 B,而不管哪个任务在队列的头部。有没有办法做到这一点?

队列优先级对我来说也很好。这意味着我可以创建 2 个不同的队列,比如 high_priority_queue 和 low_priority_queue,celery 应该始终先执行 high_priority_queue 中的任务,然后再执行 low_priority_queue。

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

谢谢

最佳答案

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

由于您想要不同的解决方案,我建议为 apply_async 使用 priority 参数。正如 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)

关于python - 优先考虑 celery 队列/任务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48040691/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com