我有5个名为1-5的工作线程和两个队列A和B,我需要将队列A分配给工作线程1和2,将队列3、4、5分配给B,当队列A为空或队列1、2处于空闲状态时,我还需要将工作线程1和2分配给队列B中的任务。我需要在我的Celery任务中使用Django应用程序中的RabbitMQ brocker来配置这个。您是否可以指定如何分配队列特定任务并根据上述逻辑运行worker?谢谢你。
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
app.conf.task_routes
1条答案
按热度按时间pbossiut1#
对于celery 来说,这就是你所需要的:
在django中分配队列的方法不止一个:(我的设置在conf中)按任务设置中的应用程序/文件夹:
直接使用:
也许还有其他的,但对我来说,我用这个方法:
我使用
app.conf.task_routes
来实现特定的用途,比如cron