我正在尝试使用Celery实现以下方案:两个(相同)长时间运行任务的队列,一个用于“正常”,另一个用于“空闲”优先级。
我让工作人员监视两个队列并首先从“正常”优先级队列中获取任务,如果它是空的,它将从“空闲”优先级中获取任务。
我的问题是:是否可以保证工人检查任务队列的顺序?此外,这是实施优先事项的正确方法吗?
背景:任务正在运行ffmpeg转码作业。 “正常”优先级将是新视频(必须尽快转码),“空闲”优先级将是将旧(40.000+视频)存档重新转码为更新格式设置的任务。我没有多个服务器可用于执行多服务器任务调度。
答案 0 :(得分:1)
根据空闲工作者没有消耗太多系统资源的理论,我已经实现了两个优先级,第二个交换,第二个队列和第二组工作。我没有这么密集的工作流程,因此当第一个集合处于活动状态时,我不会让第二组工作程序自行控制,但UNIX renice命令可能适用于此。
您可能也可以对控制队列执行某些操作,以使工作人员无法接收工作请求,他们还需要从控制队列中获取令牌。然后将少量令牌吐出到空闲控制队列,但是向正常控制队列发送大量令牌。
答案 1 :(得分:-1)