从许多队列中获取任务

时间:2012-03-14 11:52:35

标签: rabbitmq celery

我有两种类型的任务,一种是由用户生成的,另一种是大批量创建的。任务将分开队列("短"和"长") 当一个队列中有任务(即那个庞大的批处理)时,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

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_limit,也会发生这种情况,那就是" long"队列。我得到的只是缓慢的任务阻塞系统更长时间:/ 有没有办法确保Celery从所有队列中获取任务? (我使用Celery 2.5.1和RabbitMQ)

1 个答案:

答案 0 :(得分:0)

您可以为每个队列启动单独的芹菜工作者:

  

$ celeryd -Q short

     

$ celeryd -Q long

在这种情况下,每种类型的任务将由独立的工作人员独立处理。