使用Celery + Rabbitmq进行的公平任务处理顺序

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

我有一个为多个用户提供服务的Django应用程序。每个用户都可以提交要执行的资源密集型任务(数分钟至数小时)。我想基于公平分配资源来执行任务。后端使用Celery和RabbitMQ来执行任务。

我已经进行了广泛的研究,但无法为我的特殊情况找到任何解决方案(或者无法将其组合在一起。)据我所知,没有任何内置功能可以在Celery和RabbitMQ中做到这一点。是否可以使用自定义代码来处理任务的执行顺序?这将允许根据用户数据计算优先级,并选择下一步应执行的任务。

相关: How can Celery distribute users' tasks in a fair way?

python django rabbitmq celery
1个回答
0
投票

AMPQ队列是FIFO。因此,不可能从队列中间抓取项目来执行。我想到的两个解决方案是:

a。)如另一篇文章所述,使用锁来限制用户的资源。

b。)有2个队列;提交队列和执行队列。提交队列根据您选择实现的任何算法,使执行队列充满工作。这可能会更复杂,但可能会更符合您的需求。

© www.soinside.com 2019 - 2024. All rights reserved.