8

我正在尝试使用 Celery 实现以下场景:两个(相同)长时间运行的任务队列,一个用于“正常”,另一个用于“空闲”优先级。

我会让工作人员监控两个队列并首先从“正常”优先级队列中获取任务,如果它是空的,它将从“空闲”优先级中获​​取任务。

我的问题是:是否可以保证工作人员检查任务队列的顺序?此外,这是实施优先事项的正确方法吗?

背景:任务正在运行 ffmpeg 转码作业。“正常”优先级是新视频进来(必须尽快转码),“空闲”优先级是将旧(40.000+ 视频)存档重新转码为更新格式设置的任务。我没有多台服务器可用于进行多服务器任务分派。

4

2 回答 2

1

在空闲worker不消耗太多系统资源的理论下,我实现了两个优先级,第二个交换,第二组队列,第二组worker。我没有如此密集的工作流程,所以当第一组工作人员处于活动状态时,我不会让我的第二组工作人员自我节制,但 UNIX renice 命令可能会为此工作。

您可能还可以对控制队列做一些事情,这样工人接收工作请求是不够的,他们还需要从控制队列中获取令牌。然后你向空闲控制队列吐出少量令牌,但向正常控制队列吐出大量令牌。

于 2012-01-29T07:03:10.220 回答