我有两种类型的任务,一种是由用户生成的,另一种是大批量创建的。任务将分开队列("短"和"长") 当一个队列中有任务(即那个庞大的批处理)时,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)
答案 0 :(得分:0)
您可以为每个队列启动单独的芹菜工作者:
$ celeryd -Q short
$ celeryd -Q long
在这种情况下,每种类型的任务将由独立的工作人员独立处理。