Celery:确保工作人员不会只运行来自一个用户的作业



我有4个并行性为6的芹菜工作者。

我有用户提交不同数量的作业(从1到20)。

如何确保每个用户的作业都有相同的处理时间,并且一个用户的作业不会填满队列,迫使其他用户的作业等待。

我担心,如果工人最终完成了第一个用户提交的所有作业,那么其他用户排队的作业必须等待第一个用户完成,这会带来不便。

有没有一种方法可以让芹菜工人意识到一个用户的作业占用了另一个用户排队的作业。相反,我可以在任何给定时间从每个用户最多运行一个作业吗?

我有一个队列,我将所有用户的作业提交到该队列,我是否需要为每个用户创建一个队列并以某种方式使用循环策略从每个用户的队列中提取一个作业?

目前Celery不支持优先级队列。

为每个用户创建一个队列并根据循环算法对其进行调度似乎是一项艰巨的工作。

解决问题的一个简单方法是创建一个临时表&存储传入任务的详细信息。将收到的第一个任务发送到芹菜。当它完成时,您可能已经收到了来自不同用户的大量任务。现在基于用户id,完成任务&未完成的任务,您可以将大多数适当的任务发送给芹菜执行。

相关内容

  • 没有找到相关文章

最新更新