Celery 任务优先级

2024-01-18

我想使用 Celery 管理任务。我想要一个任务队列(并发性为1),并且能够将任务推送到具有不同优先级的队列中,这样优先级较高的任务将抢占其他任务。

我将三个任务添加到队列中,如下所示:

添加任务.py

from tasks import example_task

example_task.apply_async((1), priority=1)
example_task.apply_async((2), priority=3)
example_task.apply_async((3), priority=2)

我有以下配置:

tasks.py

from __future__ import absolute_import, unicode_literals
from celery import Celery
from kombu import Queue, Exchange
import time

app = Celery('tasks', backend='rpc://', broker='pyamqp://')

app.conf.task_queues = [Queue('celery', Exchange('celery'), routing_key='celery', queue_arguments={'x-max-priority': 10})]


@app.task
def example_task(task_num):
    time.sleep(3)
    print('Started {}'.format(task_num)
    return True

我希望我添加的第二个任务在第三个任务之前运行,因为它具有更高的优先级,但事实并非如此。它们按照添加的顺序运行。

我正在遵循文档并认为我已经正确配置了应用程序。

我是否做错了什么或者我误解了优先级功能?


队列有可能没有机会对消息进行优先级排序(因为它们在排序发生之前就被下载了)。尝试使用这两个设置(根据需要适应您的项目):

CELERY_ACKS_LATE = True
CELERYD_PREFETCH_MULTIPLIER = 1

预取乘数默认为 4。

我开发了一个示例应用程序来在很小的范围内实现 Celery 的优先级任务。请看一下here https://github.com/vijeth-aradhya/celery-priority-tasking。在开发它时,我遇到了一个非常相似的问题,而设置的改变实际上解决了它。

请注意,您还需要 RabbitMQ 版本 3.5.0 或更高版本。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Celery 任务优先级 的相关文章

随机推荐

  • 断言 VS 运行时异常

    我正在编写 API 因此我的 API 将从外部模块中使用 这是我无法弄清楚使用断言或什么的方法之一java lang IllegalArgumentException Adds translation of information to u
  • jQuery - 检查元素是否进入视图,淡入那些可见的元素

    当我知道要指定哪个元素时 我找到了这个问题的答案 但我正在寻找一种方法来检查 滚动 是否具有特定类的任何元素已进入视图 并按它们的方式修改它们 例如 更改不透明度 仅更改那些可见的透明度 我知道代码可能看起来与此类似 但我无法使其工作 jQ
  • Perl 特殊变量“@_”在子例程中不起作用

    该脚本从下载的网页中提取 URL 我在使用这个脚本时遇到了一些问题 当我使用 my csv html line 然后打印出 html LineArray 它只是打印出来 1 s 当我更换 my csv html line with my c
  • 传递引用类型对象并更改值

    我正在尝试将引用类型对象传递到方法中并从那里更改它 当我更改它时 传递给方法的变量没有更改 这是示例 public interface IPerson string Name get public class Teacher IPerson
  • Android Studio“构建”选项卡没有指向文件和行的链接?

    如何启用它以便每个编译时错误都带有指向文件和行的链接 我的同事也是这样 在我的 IDE 上似乎有些东西被禁用了 我找不到什么和在哪里 帮助 None
  • PyCharm 中针对 Python 编译扩展的自动完成

    当使用编译扩展 例如 OpenCV Python 绑定 编写 Python 代码时 PyCharm 似乎不知道它们的可用性 导入标有灰色下划线 作为工具提示显示 未解析的引用 并且自动完成功能也不起作用 代码中已使用的函数名称除外 这不是由
  • 使用 TreeView 最小化 ViewState

    关于如何做到这一点有任何实用的提示 技巧吗 似乎没有很多关于如何做到这一点的信息 我正在将数据从数据库加载到 TreeView 中 最大节点数约为 100 我仍然对最小化 ViewState 感兴趣 我还将动态添加和删除节点 通过用户交互
  • MSQLSMS 中蓝色和粉色单词的含义

    Microsoft SQL Management Studio 突出显示了一些特殊单词 并用蓝色或粉红色将它们着色 我想知道哪个规则决定了要使用的颜色 例如 考虑以下两个语句 SELECT FROM myTable UPDATE myTab
  • 由于某种原因无法从 p 标签获取文本 - Selenium (Python)

    我正在尝试用 Selenium 抓取页面 示例 HTML 如下所示 来自查看页面源代码 div class col s12 m12 l4 xl4 therapist contact list p class col s6 m6 l6 xl6
  • 停止 jquery 循环插件

    我正在使用cycle jquery 插件 我有一些淡入淡出的图像 希望它在循环结束时停止在最后一张图像上 有谁知道一个好方法来做到这一点 谢谢
  • ASCII 到光栅的转换

    我正在使用以下代码打开单波段光栅图像 带有温度值 library raster nrows 764 ncols 1022 df1 lt read table AA092800 1 asc skip 11 header FALSE sep t
  • Flask 静态文件路由中的变量 [url_for('static', filename='')] [重复]

    这个问题在这里已经有答案了 我正在制作一个简单的音乐应用程序 我想允许用户上传他们的音频文件 并且我有一个页面 我计划在其中显示所有歌曲 我创建了一个模板 结构如下 for song in songs div class chart ite
  • 使用自定义日期初始化 NSDate

    我正在寻找类似的东西 NSDate date NSDate alloc initWithYear 1984 month 10 Day 8 有没有办法做这样的事情 Thanks 我为此任务编写了一个类别 NSDate 缺少很多有用的方法 in
  • android 中如何检测用户存在?

    我知道在 Galaxy Samsung SIII 中可以在设置中配置一个选项 以避免用户在查看屏幕时屏幕关闭 我认为手机使用摄像头或某种存在传感器 是否可以通过编程来完成 即使可以 某些设备也无法做到这一点 我在这里想象一些可能性 使用相机
  • 如何自动更新使用 Inno Setup 安装的应用程序

    我有一个适用于 Windows 的可执行应用程序 setup exe 是我使用基于 Java 的 Launch4j Inno Setup 实现的 我经常频繁发布新版本和错误修复 我想知道是否有自动安装更新的机制 Inno Setup 没有任
  • 主机名的有效字符?

    主机名的有效字符是什么 这类似于联网计算机或网络域 具体来说 我正在编写一个连接到远程服务器的 PC 游戏 所以我有一个主机名字段和一个端口字段 显然 端口是短范围内的数字 但我需要知道所有可能的主机名字符是什么 以及可能需要的任何其他模式
  • DocumentDB REST API - 授权令牌错误

    Problem 每当我们请求列表或查询时 我们都会看到从 DocumentDB REST API 返回此错误 但当我们按名称 ID 获取对象时则不会 输入的授权令牌无法满足请求 请检查预期的有效负载是否按照协议构建 并检查正在使用的密钥 背
  • 使用 PLSQL 发送电子邮件

    我想使用 PL SQL 通过 gmail 或 yahoo 主机发送电子邮件 我在 google 中搜索并找到 SMT Mail 包 但它对我不起作用 请问有人可以指导我如何实现这一目标吗 CREATE OR REPLACE PROCEDUR
  • IE 10 和 11 使固定背景在使用鼠标滚轮滚动时跳跃

    当您在 Windows 8 中滚动鼠标滚轮时 固定的背景图像会疯狂地弹跳 这仅影响 IE 10 和 IE 11 这会影响以下元素position fixed以及 这是一个具有固定背景图像的示例 http www catcubed com t
  • Celery 任务优先级

    我想使用 Celery 管理任务 我想要一个任务队列 并发性为1 并且能够将任务推送到具有不同优先级的队列中 这样优先级较高的任务将抢占其他任务 我将三个任务添加到队列中 如下所示 添加任务 py from tasks import exa