celery get 和 join 之间的区别

2023-11-22

之间有什么区别:

 r = group(some_task.s(i) for i in range(10)).apply_async()
 result = r.join()

And:

 r = group(some_task.s(i) for i in range(10))()
 result = r.get()

Celery 文档使用了这两个示例,我没有看到任何区别。


简短回答

虽然get and join的方法group应该返回相同的结果,get实现一些缓存,并且可能会更有效,具体取决于您使用的后端。除非你确实需要使用join对于某些边缘情况,您应该使用get.

长答案

这是get芹菜的做法ResultSet类其中GroupResult阶级延伸。

def get(self, timeout=None, propagate=True, interval=0.5,
        callback=None, no_ack=True, on_message=None):
    """See :meth:`join`
    This is here for API compatibility with :class:`AsyncResult`,
    in addition it uses :meth:`join_native` if available for the
    current result backend.
    """
    if self._cache is not None:
        return self._cache
    return (self.join_native if self.supports_native_join else self.join)(
        timeout=timeout, propagate=propagate,
        interval=interval, callback=callback, no_ack=no_ack,
        on_message=on_message,
    )

我们看到的第一件事是文档字符串告诉我们查看join记录方法。这立即表明这些方法非常相似。

看着对方的身体get方法中,我们可以看到它首先检查缓存的值,如果已设置则返回该值。如果没有找到缓存值,get将调用join or the join_native方法取决于后端是否支持本机连接。如果你找到它的格式return声明有点令人困惑,这本质上是同一件事:

if self.supports_native_join:
    return self.join_native(timeout=timeout,
                            propagate=propagate,
                            interval=interval,
                            callback=callback,
                            no_ack=no_ack,
                            on_message=on_message)
else:
    return self.join(timeout=timeout,
                     propagate=propagate,
                     interval=interval,
                     callback=callback,
                     no_ack=no_ack,
                     on_message=on_message)

的文档字符串join方法有这个说法。

对于结果存储后端来说,这可能是一项昂贵的操作,必须 诉诸轮询(例如数据库)。你应该考虑使用join_native如果你的后端支持的话。

So you should正在打电话join_native代替join如果你的后端支持的话。但为什么要费尽心思有条件地调用其中一个呢?get为您总结了这个逻辑吗?只需使用get反而。

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

celery get 和 join 之间的区别 的相关文章

  • 如何计算 pandas datetime 对象的均值和方差?

    如何计算 YYYY MM DD 形式的 python 日期时间对象的汇总统计数据 均值和标准差 我想对具有不同 ID 的不同日期时间对象组执行此操作 数据如下 import datetime as dt df pd DataFrame Da
  • 如何传递架构以从现有数据帧创建新数据帧?

    要将 schema 传递到 json 文件 我们这样做 from pyspark sql types import StructField StringType StructType IntegerType data schema Stru
  • Python - 比较同一字典中的值

    我有一本字典 d Trump MAGA FollowTheMoney Clinton dems Clinton Stein FollowTheMoney Atlanta 我想删除字符串列表中的重复字符串 该字符串是键的值 对于这个例子 期望
  • 为什么 dataclasses.astuple 返回类属性的深层副本?

    在下面的代码中astuple函数正在执行数据类的类属性的深层复制 为什么它不能产生与函数相同的结果my tuple import copy import dataclasses dataclasses dataclass class Dem
  • pandas DataFrame.join 的运行时间是多少(大“O”顺序)?

    这个问题更具概念性 理论性 与非常大的数据集的运行时间有关 所以我很抱歉没有一个最小的例子来展示 我有一堆来自两个不同传感器的数据帧 我需要最终将它们连接成两个very来自两个不同传感器的大数据帧 df snsr1 and df snsr2
  • 更好地相当于这个疯狂的嵌套 python for 循环

    for a in map for b in map a for c in map b for d in map c for e in map d print a b c d e 上面的代码用于创建图中一定长度的所有路径 map a 表示从
  • 矩形函数的数值傅里叶变换

    本文的目的是通过一个众所周知的分析傅里叶变换示例来正确理解 Python 或 Matlab 上的数值傅里叶变换 为此 我选择矩形函数 这里报告了它的解析表达式及其傅立叶变换https en wikipedia org wiki Rectan
  • 打印包含字符串和其他 2 个变量的变量

    var a 8 var b 3 var c hello my name is var a and var b bye print var c 当我运行程序时 var c 会像这样打印出来 hello my name is 8 and 3 b
  • 如何将特定范围内的标量添加到 numpy 数组?

    有没有一种更简单 更节省内存的方法可以单独在 numpy 中执行以下操作 import numpy as np ar np array a l r ar c a a 0 l ar tolist a r 它可能看起来很原始 但它涉及获取给定数
  • 使用 python/numpy 重塑数组

    我想重塑以下数组 gt gt gt test array 11 12 13 14 21 22 23 24 31 32 33 34 41 42 43 44 为了得到 gt gt gt test2 array 11 12 21 22 13 14
  • 导入错误:没有名为flask.ext.login的模块

    我的flask login 模块有问题 我已经成功安装了flask login模块 另外 从命令提示符我可以轻松运行此脚本 不会出现错误 Python 2 7 r27 82525 Jul 4 2010 07 43 08 MSC v 1500
  • Pandas 组合不同索引的数据帧

    我有两个数据框df 1 and df 2具有不同的索引和列 但是 有一些索引和列重叠 我创建了一个数据框df索引和列的并集 因此不存在重复的索引或列 我想填写数据框df通过以下方式 for x in df index for y in df
  • Python - 如何确定解析的 XML 元素的层次结构级别?

    我正在尝试使用 Python 解析 XML 文件中具有特定标记的元素并生成输出 excel 文档 该文档将包含元素并保留其层次结构 我的问题是我无法弄清楚每个元素 解析器在其上迭代 的嵌套深度 XML 示例摘录 3 个元素 它们可以任意嵌套
  • 将 Matlab 的 datenum 格式转换为 Python

    我刚刚开始从 Matlab 迁移到 Python 2 7 在读取 mat 文件时遇到一些问题 时间信息以 Matlab 的日期数字格式存储 对于那些不熟悉它的人 日期序列号将日历日期表示为自固定基准日期以来已经过去的天数 在 MATLAB
  • Python GTK+ 画布

    我目前正在通过 PyGobject 学习 GTK 需要画布之类的东西 我已经搜索了文档 发现两个小部件似乎可以完成这项工作 GtkDrawingArea 和 GtkLayout 我需要一些基本函数 如 fillrect 或 drawline
  • Protobuf 如何编码 oneof 消息结构

    对于这个 python 程序 在编码时运行 protobuf 编码会给出以下输出 0a 10 08 7f8a 0104 08 02 10 0392 0104 08 02 10 03 18 01 我不明白的是为什么8a后面有一个01 为什么9
  • Python:Goslate 翻译请求返回“503:服务不可用”[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我们不允许提出寻求书籍 工具 软件库等推荐的问题 您可以编辑问题 以便用事实和引文来回答 这个问题似乎不是关于主要由程序员使用的特定编程问
  • 如何以正确的方式为独立的Python应用程序制作setup.py?

    我读过几个类似的主题 但还没有成功 我觉得我错过或误解了一些基本的事情 这就是我失败的原因 我有一个用 python 编写的 应用程序 我想在标准 setup py 的帮助下进行部署 由于功能复杂 它由不同的 python 模块组成 但单独
  • 重新分配唯一值 - pandas DataFrame

    我在尝试着assign unique值在pandas df给特定的个人 For the df below Area and Place 会一起弥补unique不同的价值观jobs 这些值将分配给个人 总体目标是使用尽可能少的个人 诀窍在于这
  • NLTK:查找单词大小为 2k 的上下文

    我有一个语料库 我有一个词 对于语料库中该单词的每次出现 我想获取一个包含该单词之前的 k 个单词和该单词之后的 k 个单词的列表 我在算法上做得很好 见下文 但我想知道 NLTK 是否提供了一些我错过的功能来满足我的需求 def size

随机推荐

  • Haskell,树中的列表列表

    我有一棵树的数据结构 数据树 a 节点 a 树 a 树 an 空的 我需要创建一个返回列表列表的函数 其中列表的每个元素代表树的一个级别 例如 从此 1 2 3 4 5 6 7 对此 1 2 3 4 5 6 7 该函数必须具有以下形式 f
  • 循环语句性能和预分配循环语句本身

    这个观察结果并不那么重要 因为循环语句上浪费的时间性能可能比循环本身高得多 但无论如何 我会分享它 因为我搜索并找不到有关此的主题 我总是有这样的印象 预先分配要循环的数组 然后在其上循环 会比直接在其上循环更好 并决定检查它 代码将比较这
  • 达到 Gmail SMTP 每日限制

    在我的 Rails 应用程序之一中 我通过 Gmail SMTP 服务器发送电子邮件 一切正常 邮件不会成为垃圾邮件等等 但有一件事让我担心 500 条消息 天限制 SMTP 有 目前我超过 350 天 我没有找到任何谈论这个主题的官方谷歌
  • 如何跳过Airflow操作员中的任务?

    Airflow 有没有办法从 PythonOperator 中跳过当前任务 例如 def execute if condition skip current task task PythonOperator task id task pyt
  • 使用Artifactory的REST API部署jar文件

    鉴于这个API文档 我将如何使用 HTTPBuilder 和 Groovy 来构建我的查询 我已经尝试了很多事情 但我没有做对 def http new HTTPBuilder http request http artifactory 8
  • android httpGet 问题

    我正在尝试使用以下代码执行以下链接 class httpget HttpGet httpGet null public void linkexecute String url http
  • 如何在 PHP 中使用 IP 地址查找国家/地区? [复制]

    这个问题在这里已经有答案了 我有该国的 IP 范围 我正在检查此范围内的用户 IP 地址 如果为真 那么他就能够看到该网站 否则他就看不到 我使用以下代码 ip SERVER REMOTE ADDR if ip2long ip gt ips
  • Python Pandas 根据时间序列中缺失的连续值添加行

    我是 python 新手 正在努力操作 pandas 库中的数据 我有一个像这样的 pandas 数据库 Year Value 0 91 1 1 93 4 2 94 7 3 95 10 4 98 13 并想要完成缺失的年份 创建具有空值的行
  • 溢出:自动在 Firefox 中不起作用

    我有一张桌子 它是 td have overflow auto 宽度设置为 100px 在仅限火狐浏览器 超过 100px 的文本是not隐藏并替换为滚动条 当内容超出其容器的宽度时 如何隐藏内容并具有滚动条 http jsfiddle n
  • Tomcat:使用数据库连接部署两个应用程序时出现 HikariCP 问题

    我试图在同一个 tomcat7 实例上部署两个 WAR 文件 app1 war 和 app2 war 我收到此错误 Unable to register MBean HikariDataSource HikariPool 0 with ke
  • 如何从给定字符串中删除子字符串?

    有没有一种简单的方法可以从给定的字符串中删除子字符串String在Java中 例子 Hello World 去除 o Hell Wrld 您可以轻松使用String replace String helloWorld Hello World
  • 如何将不同的模板类型放入一个向量中

    我想构造一条长度或参数数量未知的消息 我采用了一个简单的模板 例如 template
  • 使用 TransactionScope RequiresNew 的缺点

    我想了解使用的权衡 缺点是什么TransactionScopeOption RequiresNew on 实体框架 带 SQL Server 2008 我们不应该使用的原因是什么RequiresNew always Regards 你应该使
  • opencv - cvCvtColor 中断言失败(dst.data == dst0.data)

    以下代码将发布错误消息 object is a color image with type cv Mat IplImage temp object IplImage object IplImage ipl object cvCreateIm
  • 将 IQueryable 转换为 IQueryable

    我们正在尝试投射一个实例IQueryable
  • 使 ASP.NET FormsAuthentication 服务器端失效

    我正在尝试 FormsAuthentication 使用 ASP NET MVC2 它运行得相当好 但是 我不知道如何处理的一种情况是验证服务器上的用户身份 以确保它仍然有效server s看法 eg 用户登录 获取 cookie 票据 带
  • Android 中打电话后调用 AUDIOFOCUS_LOSS

    我试图在电话响起时暂停媒体播放器 我使用来自 android 网站的示例代码 就像这样 public void onAudioFocusChange int focusChange switch focusChange case Audio
  • 如何为 C# 配置 Eclipse [关闭]

    Closed 这个问题不符合堆栈溢出指南 目前不接受答案 我正在使用 Eclipse Juno 和 windows 8 我想为 juno 配置 C 因为 eclipse 比其他框架更容易 并且它有 c c java 等 但没有 C 所以有人
  • 从 C# 代码与 Quickbook 集成的最佳方式是什么? [关闭]

    Closed 这个问题是基于意见的 目前不接受答案 根据我的研究 基本上有 3 个选择 1 使用COM2 使用 Web 服务和 Web 连接器3 使用第三方组件 而且似乎有很多 这些选项中的每一个都给我带来了一个问题 1 我被告知不能使用
  • celery get 和 join 之间的区别

    之间有什么区别 r group some task s i for i in range 10 apply async result r join And r group some task s i for i in range 10 re