gpt4 book ai didi

django - 在 Celery 中为长时间运行的任务实现 "idle"和 "normal"优先级队列

转载 作者:行者123 更新时间:2023-12-02 05:43:59 25 4
gpt4 key购买 nike

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

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

我的问题是:是否可以保证worker检查任务队列的顺序?另外,这是实现优先事项的正确方法吗?

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

最佳答案

根据空闲工作线程不会消耗太多系统资源的理论,我使用第二个交换器、第二组队列和第二组工作线程实现了两个优先级。我没有如此密集的工作流程,因此当第一组工作人员处于事件状态时,我不会让第二组工作人员 self 限制,但 UNIX renice 命令可能可以解决此问题。

您可能还可以使用控制队列做一些事情,这样工作人员不足以接收工作请求,他们还需要从控制队列获取 token 。然后,您向空闲控制队列吐出少量 token ,向正常控制队列吐出大量 token 。

关于django - 在 Celery 中为长时间运行的任务实现 "idle"和 "normal"优先级队列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7453873/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com