我有4名芹菜工人,每人的并发度为6。
我让用户提交不同数量的工作(从1到20)。
如何确保每个用户的工作获得相同的处理时间,并且一个用户的工作没有填满队列,迫使其他用户的工作等待。
我担心如果工人最终要完成第一个用户提交的所有工作,其他用户排队的工作必须等待第一个用户完成,这会给您带来不便。
有没有办法让芹菜工人意识到一个用户的工作阻碍了其他用户的排队工作。相反,我可以在任何给定时间从每个用户运行最多一个作业吗?
我有一个队列,我提交所有用户的工作,我是否需要为每个用户建立一个队列,并以某种方式有循环策略从每个用户的队列中拉出一个作业?
答案 0 :(得分:0)
目前Celery doesn't support priority queues。
为每个用户建立一个队列并根据循环算法安排它们似乎是很多工作。
解决问题的一种简单方法是创建一个临时表&存储传入的任务详细信息。将首次收到的任务发送给芹菜。到它完成时,您可能已收到来自不同用户的许多任务。现在基于用户ID,完成的任务&未完成的任务,您可以将大多数适当的任务发送给芹菜执行。