rabbitmq Django Celery多个工作人员和多个队列

i1icjdpr  于 2023-01-13  发布在  RabbitMQ
关注(0)|答案(1)|浏览(170)

我有5个名为1-5的工作线程和两个队列A和B,我需要将队列A分配给工作线程1和2,将队列3、4、5分配给B,当队列A为空或队列1、2处于空闲状态时,我还需要将工作线程1和2分配给队列B中的任务。
我需要在我的Celery任务中使用Django应用程序中的RabbitMQ brocker来配置这个。
您是否可以指定如何分配队列特定任务并根据上述逻辑运行worker?
谢谢你。

pbossiut

pbossiut1#

对于celery 来说,这就是你所需要的:

celery multi start 5 -A conf -l info -Q:1-2 queueA -Q:3-5 queueB --pidfile="%n.pid"

在django中分配队列的方法不止一个:(我的设置在conf中)按任务设置中的应用程序/文件夹:

app.conf.task_routes = {
    'appA.tasks.*': {'queue': 'queueA'},
    'appB.tasks.*': {'queue': 'queueB'},
}

直接使用:

myTask.apply_async((2, 2), queue='queueA', countdown=10)

也许还有其他的,但对我来说,我用这个方法:

app.conf.task_default_queue = 'queueA'

我使用app.conf.task_routes来实现特定的用途,比如cron

相关问题