Rabbitmq 从多个队列获取任务
我有两种类型的任务,一种是由用户生成的,另一种是大量创建的。任务将分开队列(“短”和“长”) 当一个队列中有任务时(即,大批量),芹菜只提取那些任务,完全忽略另一个队列,直到整个批次完成Rabbitmq 从多个队列获取任务,rabbitmq,celery,Rabbitmq,Celery,我有两种类型的任务,一种是由用户生成的,另一种是大量创建的。任务将分开队列(“短”和“长”) 当一个队列中有任务时(即,大批量),芹菜只提取那些任务,完全忽略另一个队列,直到整个批次完成 Example: send 100 slow tasks to "long" queue send 100 small tasks to "short" queue send 100 slow tasks to "long" queue send 100 small tasks to "short" queue
Example:
send 100 slow tasks to "long" queue
send 100 small tasks to "short" queue
send 100 slow tasks to "long" queue
send 100 small tasks to "short" queue
Celery behaviour:
process 100 tasks form "long" queue
process 100 tasks form "short" queue
process 100 tasks form "long" queue
process 100 tasks form "short" queue
即使我为慢任务设置了rate_限制,也会发生这种情况,即“长”队列。我得到的只是缓慢的任务会阻塞系统更长时间:/
有没有办法确保芹菜从所有队列中提取任务?(我在RabbitMQ中使用芹菜2.5.1)您可以为每个队列启动单独的芹菜工作程序: $celeryd-Q短款 $celeryd-Q长
在这种情况下,每种类型的任务都将由单独的工作人员独立处理。这是我目前的解决方案。我以相当一般的方式提出了这个问题。因为我至少有3个队列,这只会随着时间的推移而增加。为什么芹菜不能处理任务后(由于速率限制),停止寻找它可以处理的任务(即在其他队列中)?Thak you 0x00mh,这看起来是目前唯一合理的解决方案。如果我能找到更好的问题,我会更新这个问题。这可能是因为使用默认的exchange(两者都相同)造成的吗?