更改历史记录 — Python 文档

来自菜鸟教程
Celery/docs/latest/history/changelog-4.4
跳转至:导航、​搜索

更改历史记录

本文档包含 4.4.x 系列中的错误修复和新功能的更改说明,请参阅 Celery 4.4 (Cliffs) 的新特性概述 Celery 4.4 中的新功能。

4.4.7

发布日期
2020-07-31 11.45 PM UTC+6:00
发布者
阿西夫·赛义夫·乌丁
  • 将 task_received、task_rejected 和 task_unknown 添加到信号模块。
  • [ES 后端] 添加 401 作为重试的安全。
  • 将内部错误视为失败。
  • 删除 redis 扇出警告。
  • 修复: -A 和 -args 应该表现相同。 (#6223)
  • 基于类的任务自动重试 (#6233)
  • 使用 Redis 结果后端保留组结果的顺序 (#6218)
  • 用 celery.five Fixes #6250 替换 future,并使用 raise_with_context 而不是 reraise
  • 修复 REMAP_SIGTERM=SIGQUIT 不起作用
  • (Fixes#6258) MongoDB: 修复序列化问题 (#6259)
  • 在 Redis 选择加入中使用有序集
  • 测试、CI、Docker 和样式以及小的文档改进。


4.4.6

发布日期
2020-06-24 2.40 PM UTC+6:00
发布者
阿西夫·赛义夫·乌丁
  • 删除自动缩放 force_scale 方法 (#6085)。
  • 修复自动缩放测试
  • 将 ping 目标传递给请求
  • chord:将初始化选项与运行选项合并
  • 放回没有状态的 KeyValueStoreBackend.set 方法
  • 为 celery multi 添加 –range-prefix 选项 (#6180)
  • 向 AsyncResult 类添加了 as_list 函数 (#6179)
  • 修复线程或 gevent 池中的 CassandraBackend 错误 (#6147)
  • 昆布 4.6.11


4.4.5

发布日期
2020-06-08 12.15 PM UTC+6:00
发布者
阿西夫·赛义夫·乌丁
  • 添加对未来的缺失依赖 (#6146)。
  • ElasticSearch:如果文档在索引之间被删除,则重试索引
  • 修复 Windows 构建
  • 自定义 chord_unlock 任务的重试间隔
  • 在本地修复多个测试


4.4.4

发布日期
2020-06-03 11.00 AM UTC+6:00
发布者
阿西夫·赛义夫·乌丁
  • 使用显式重试修复 autoretry_for (#6138)。
  • 昆布 4.6.10
  • 使用 Django DB 最大年龄连接设置(修复 #4116)。
  • 为后端添加可恢复异常的重试 (#6122)。
  • 修复指数退避的抖动随机分布。
  • ElasticSearch:添加设置以将元保存为 json。
  • 修复 #6136。 celery 4.4.3 总是尝试创建 /var/run/celery 目录。
  • 添加 task_internal_error 信号 (#6049)。


4.4.3

发布日期
2020-06-01 4.00 PM UTC+6:00
发布者
阿西夫·赛义夫·乌丁
  • 修复 s3 后端中的后端 utf-8 编码。
  • 昆布 4.6.9
  • 任务类定义可以具有重试属性 (#5869)
  • 将pycurl升级到支持wheel的最新版本。
  • 将正常运行时间添加到 stats inspect 命令
  • 修复问题 #6019:获取时无法使用 mysql SSL 参数
  • 清除 TraceBack 以减少异常任务的内存泄漏 (#6024)
  • 例外: NotRegistered:修复语言
  • 如果传输未连接,则放弃发送工作人员离线消息
  • 将任务添加到 celery.__init__.py 中的 __all__
  • 确保链中的单个链对象不会引发 MaximumRecursion
  • 当 prefetch_multiplier 为 1 时修复自动缩放
  • 允许 start_worker 在没有 ping 任务的情况下运行
  • 更新 celeryd.conf
  • 修复正确处理为 always_eager 模式配置序列化程序的问题。
  • 删除 prefetch_multiplier 时 prefetch_count 增加的两倍
  • 修复 Eager 函数在重试后不返回结果
  • 如果不抛出和 is_eager 则返回重试结果
  • 无论重新交付的标志如何,始终在工人丢失时重新排队
  • 允许文件系统后端中的相对路径 (#6070)
  • [已修复问题 #6017]
  • 避免由于任务重复导致的竞争条件。
  • 异常必须是旧式类或派生自 BaseException
  • 修复 Windows 构建 (#6104)
  • 在 base.py 中为元任务添加编码 (#5894)
  • 更新 time.py 以解决微秒问题 (#5199)
  • 将后端 _ensure_not_eager 错误更改为警告
  • 添加对 'celery.chord_unlock' 任务的优先支持 (#5766)
  • 更改急切重试行为
  • 避免弹性搜索后端中的竞争条件
  • 后端基础 get_many 传递 READY_STATES arg
  • 为 Elasticsearch 添加集成测试并修复 _update
  • 壮举(后端):向 ArangoDB 后端添加清理
  • 删除 jython 检查
  • 修复文件系统后端不能被picked序列化


4.4.0

发布日期
2019-12-16 9.45 AM UTC+6:00
发布者
阿西夫·赛义夫·乌丁
  • 此版本在 CPython 2.7、3.5、3.6、3.7 和 3.8 上得到官方支持,在 PyPy2 和 PyPy3 上也得到支持。
  • 昆布 4.6.7
  • 任务类定义可以具有重试属性 (#5869)


4.4.0rc5

发布日期
2019-12-07 21.05 AM UTC+6:00
发布者
阿西夫·赛义夫·乌丁
  • 昆布 4.6.7
  • 如果没有事件,则禁用事件引导 (#5807)
  • SQS - 拒绝失败 (#5843)
  • 使用 ThreadPoolExecutor 添加并发模型 (#5099)
  • 为 DynamoDB 后端添加自动过期 (#5805)
  • 在所有后端存储扩展结果 (#5661)
  • 修复发布非常大的和弦标题时的竞争条件 (#5850)
  • 改进文档和测试矩阵


4.4.0rc4

发布日期
2019-11-11 00.45 AM UTC+6:00
发布者
阿西夫·赛义夫·乌丁
  • 昆布 4.6.6
  • Py-AMQP 2.5.2
  • 蟒蛇 3.8
  • 大量错误修复
  • pypy 7.2


4.4.0rc3

发布日期
2019-08-14 23.00 PM UTC+6:00
发布者
阿西夫·赛义夫·乌丁
  • 昆布 4.6.4
  • 台球 3.6.1
  • Py-AMQP 2.5.1
  • 避免序列化日期时间 (#5606)
  • 修复:(group() | group()) 不等于单个组 (#5574)
  • 还原“代理连接使用应用程序配置中的心跳设置。
  • 额外的文件描述符安全检查。
  • 固定调用 null args (#5631)
  • 添加了缓存后端的通用路径。
  • 修复嵌套组(链(组))失败(#5638)
  • 覆盖 __call__ 时使用 self.run() (#5652)
  • 修复异步循环的终止 (#5671)
  • 修复迁移任务以同时使用消息协议的 v1 和 v2。
  • 在运行时更新 task_routes 配置现在生效。


4.4.0rc2

发布日期
2019-06-15 4:00 AM UTC+6:00
发布者
阿西夫·赛义夫·乌丁
  • 修复了许多错误和回归。
  • 昆布 4.6.3


4.4.0rc1

发布日期
2019-06-06 1:00 PM UTC+6:00
发布者
阿西夫·赛义夫·乌丁
  • Python 3.4 掉落
  • 昆布 4.6.1
  • 替换已弃用的 PyMongo 方法用法 (#5443)
  • 调用 update_state 时传递任务请求 (#5474)
  • 修复 DST 时间更改时剩余时间计算的错误 (#5411)
  • 修复请求扩展结果时丢失的任务名称 (#5439)
  • 修复 Python 2.7 上的 collections 导入问题 (#5428)
  • 处理基本后端异常反序列化器中的 AttributeError (#5435)
  • 使 AsynPool 的 proc_alive_timeout 可配置 (#5476)
  • AMQP 支持扩展结果 (#5495)
  • 修复 SQL Alchemy 结果后端以使用扩展结果 (#5498)
  • 使用所需参数修复异常恢复 (#5500)
  • Django:如果 ImportError 不是由缺少任务模块引起的,则重新引发异常 (#5211)
  • Django:修复了当 CONN_MAX_AGE != 0 时将数据库连接置于无效状态的回归 (#5515)
  • 修复了 OSError 导致失去与代理的连接 (#4457)
  • 修复了检查 API 无法获取请求详细信息的问题
  • 修复 mogodb 后端身份验证 (#5527)
  • 将扩展任务元参数/kwargs 的列类型更改为 LargeBinary
  • 在 Elasticsearch 后端结果中处理 http_auth (#5545)
  • 修复任务序列化程序被 task_always_eager=True (#5549) 忽略
  • 修复 task.replace 以在 .apply() 以及 `.apply_async() 中工作 (#5540)
  • 修复发送 worker_process_init 信号给 solo worker (#5562)
  • 修复异常消息打包 (#5565)
  • 为 beat_schedule 添加延迟参数函数 (#5558)
  • 多个文档更新


4.3.0

发布日期
2019-03-31 7:00 PM UTC+3:00
发布者
奥默·卡茨
  • 添加了对使用正则表达式模式或全局模式向多个 Pidbox 进行广播的支持。

    这允许您一次检查或 ping 多个工作人员。

    贡献者德米特里·马林诺夫斯基 & 杰森海德

  • 添加了对 PEP 420 命名空间包的支持。

    这允许您从命名空间包加载任务。

    贡献者 科林·沃森

  • 添加了 :setting:`acks_on_failure_or_timeout` 作为设置而不是仅任务选项。

    这在原始 PR 中是缺失的,但现在为了完整性而添加。

    贡献者 Omer Katz

  • 添加了 :signal:`task_received` 信号。

    贡献者 Omer Katz

  • 修复了使用 Python < 3.6 的每个人都发生的 CLI 崩溃。

    该崩溃是通过使用 Python 3.6 中引入的 ModuleNotFoundError 异常在 acd6025 中引入的。

    贡献者 Omer Katz

  • 修复了在 :setting:`result_expires` 设置为 None 时使用 Redis 结果后端时发生的崩溃。

    贡献者托尼·鲁扎 & 奥默·卡茨

  • 为 MongoDB 结果后端添加了 DNS 种子列表连接格式 的支持。

    这需要 dnspython 包,该包将在为 MongoDB 结果后端安装依赖项时默认安装。

    贡献者 George Psarakis

  • 将最小 eventlet 版本提高到 0.24.1。

    贡献者 George Psarakis

  • 将 msgpack-python 包替换为 msgpack。

    我们不再使用已弃用的软件包。 有关如何升级的更多详细信息,请参阅此版本的 重要说明

    贡献者 丹尼尔·哈勒

  • 允许调度当前工作人员中未注册的任务的错误处理程序。

    这些类型的错误处理程序现在是可能的:

    from celery import Signature
    Signature(
      'bar', args=['foo'],
      link_error=Signature('msg.err', queue='msg')
    ).apply_async()
  • 对 Redis 代理和结果后端的 SSL 支持的其他修复和增强。

    供稿人 杰里米·科恩

代码清理、测试覆盖率和 CI 改进:

  • 奥默·卡茨
  • 弗洛里安·夏尔丹


文档修复:

  • 奥默·卡茨
  • Samuel Huang
  • 阿米尔·侯赛因·赛义德·梅尔
  • 德米特罗·利特维诺夫


4.3.0 RC2

发布日期
2019-03-03 晚上 9:30 UTC+2:00
发布者
奥默·卡茨
  • 文件系统后端:为文件系统后端添加了有意义的错误消息。

    贡献者 Lars Rinn

  • 新结果后端:添加了ArangoDB后端。

    贡献者 Dilip Vamsi Moturi

  • Django:在当前工作目录之前而不是附加,以便项目目录按预期优先于系统模块。

    贡献者 Antonin Delpeuch

  • 将最低 py-redis 版本提高到 3.2.0。

    由于 py-redis 早期版本中的多个错误导致 Celery 出现问题,我们被迫将所需的最低版本提高到 3.2.0。

    贡献者 Omer Katz

  • 依赖项:将 Kombu 的最低要求版本提高到 4.4

    贡献者 Omer Katz


4.3.0 RC1

发布日期
2019-02-20 下午 5:00 IST
发布者
奥默·卡茨
  • Canvascelery.chain.apply() 在应用链时不再忽略关键字参数。

    供稿人 Korijn van Golen

  • 结果集:不要尝试在celery.result.ResultSet中缓存结果。

    在加入期间,结果缓存使用 celery.result.ResultSet.get() 填充,如果其中一个结果包含异常,则加入意外失败。

    结果缓存现已删除。

    供稿人 德里克·哈兰德

  • Application:当 related_name 关键字参数为 None 时,celery.Celery.autodiscover_tasks() 现在尝试导入包本身。

    贡献者 Alex Ioannidis

  • Windows 支持 :在 Windows 10 上,陈旧的 PID 文件阻止 celery beat 运行。 我们现在在 SystemExit 升起时移除它们。

    贡献者 :github_user:`na387`

  • Task:添加了新的 :setting:`task_acks_on_failure_or_timeout` 设置。

    在失败或超时时确认 SQS 消息使得无法使用死信队列。

    我们引入了新选项 acks_on_failure_or_timeout,以确保我们可以完全回退到原生 SQS 消息生命周期,使用重新传递进行重试(在处理缓慢或失败的情况下)并在定义的次数后转换到死信队列。

    贡献者 Mario Kostelac

  • RabbitMQ Broker:调整 HA 标头以在 RabbitMQ 3.x 上工作。

    这一变化也意味着我们将终止对 RabbitMQ 2.x 的官方支持。

    供稿人 Asif Saif Uddin

  • 命令行:改进芹菜更新错误处理。

    供稿人 Federico Bond

  • Canvas:支持 [X37X]:setting:`task_always_eager` 设置为 True 的和弦。

    贡献者 Axel Haustant

  • Result Backend:可选择将任务属性存储在结果后端。

    :setting:`result_extended` 配置选项设置为 True 可以在结果后端存储额外的任务属性。

    贡献者 约翰·阿诺德

  • Couchbase Result Backend:允许Couchbase 结果后端自动检测序列化格式。

    供稿人 道格拉斯罗德

  • 新结果后端:添加了Azure Block Blob Storage结果后端。

    后端在 azure-storage 库之上实现,该库使用 Azure Blob 存储作为可扩展的低成本 PaaS 后端。

    后端通过一个简单的 nginx/gunicorn/sanic 应用程序进行负载测试,该应用程序托管在 DS4 虚拟机(4 个 vCore,16 GB RAM)上,能够以 ~170 RPS 处理 600 多个并发用户。

    提交还包含实时端到端测试,以促进后端功能的验证。 通过将 AZUREBLOCKBLOB_URL 环境变量设置为 azureblockblob://{ConnectionString} 来激活测试,其中 ConnectionString 的值可以在 Access 中找到Azure 门户中存储帐户资源的密钥 窗格。

    贡献者 克莱门斯·沃尔夫

  • Taskcelery.app.task.update_state() 现在接受关键字参数。

    这允许将额外的字段传递给结果后端。 这些字段默认不使用,但自定义结果后端可以使用它们来确定如何存储结果。

    贡献者 克里斯托弗·迪格南

  • 优雅地处理消费者 kombu.exceptions.DecodeError

    当使用 v2 协议时,当消费者在解码消息时遇到错误时,worker 不再崩溃。

    供稿人 Steven Sklar

  • 部署:修复init.d服务停止。

    马库斯·麦克海尔 提供

  • 姜戈 :放弃对 Django < 1.11 的支持。

    供稿人 Asif Saif Uddin

  • Django:删除旧的 djcelery 加载器。

    供稿人 Asif Saif Uddin

  • Result Backendcelery.worker.request.Request 现在将 celery.app.task.Context 传递给后端的 store_result 函数。

    由于该类当前将 self 传递给这些函数,因此在使用 django-celery-results 时撤销任务会导致任务结果数据损坏。

    供稿人 山口清弘

  • Worker:心跳连接挂掉时重试。

    以前,我们一直在尝试写入断开的连接。 这会导致内存泄漏,因为事件调度程序会不断将消息附加到出站缓冲区。

    贡献者 Raf Geens

  • Celery Beat:调度时处理微秒。

    贡献者 K Davis

  • Asynpool:修复关闭套接字时的死锁。

    在尝试关闭套接字时,celery.concurrency.asynpool.AsynPool 仅从集线器中移除了队列写入器,但并未移除读取器。 这导致文件描述符出现死锁,最终工作人员停止接受新任务。

    我们现在在单个循环迭代中关闭读取器和写入器文件描述符,以防止死锁。

    供稿人 约书亚·恩格尔曼

  • Celery Beat:计算时间戳时正确考虑时区。

    贡献者 :github_user:`yywing`

  • Celery Beatcelery.beat.Scheduler.schedules_equal() 现在可以处理任一参数是 None 值。

    贡献者 :github_user:`ratson`

  • Documentation/Sphinx:修复了 Sphinx 对 shared_task 装饰函数的支持。

    贡献者 乔恩·巴纳法托

  • 新的结果后端:添加了CosmosDB的结果后端。

    此更改添加了一个新的结果后端。 后端是在 pydocumentdb 库之上实现的,该库使用 Azure CosmosDB 作为可扩展、全局复制、高性能、低延迟和高吞吐量的 PaaS 后端。

    贡献者 克莱门斯·沃尔夫

  • Application:添加了配置选项以允许单独的多个应用程序在单个 RabbitMQ 虚拟主机上运行。

    新添加的 :setting:`event_exchange`:setting:`control_exchange` 配置选项允许用户使用单独的 Pidbox 交换和单独的事件交换。

    这允许不同的 Celery 应用程序在同一个虚拟主机上单独运行。

    贡献者 Artem Vasilyev

  • Result Backend:忘记结果时忘记父结果元数据。

    贡献者 :github_user:`tothegump`

  • Task 将任务参数存储在 celery.exceptions.MaxRetriesExceededError 中。

    供稿人 安东尼·鲁希尔

  • Result Backend:添加了 :setting:`result_accept_content` 设置。

    此功能允许为结果后端配置不同的接受内容。

    一个特殊的序列化程序 (auth) 用于签名消息,但是 result_serializer 保留在 json 中,因为我们不想在我们的结果后端中加密内容。

    为了接受来自结果后端的未签名内容,我们引入了这个新的配置选项来指定来自后端的接受内容。

    贡献者 本杰明佩雷托

  • Canvas:修复了基于类的任务的错误回调处理。

    供稿人 Victor Mireyev

  • 新结果后端:添加了S3结果后端。

    供稿人 Florian Chardin

  • Task:增加了对 Cythonized Celery 任务的支持。

    供稿人 Andrey Skabelin

  • Riak Result Backend:警告 Riak 后端用户可能的 Python 3.7 不兼容。

    贡献者 George Psarakis

  • Python 运行时:添加了 Python 3.7 支持。

    贡献者奥默·卡茨 & 阿西夫·赛义夫·乌丁

  • Auth Serializer:改进了 auth 序列化器。

    auth 序列化程序进行了全面检修。 它以前被严重破坏。

    对于这个序列化程序,我们现在依赖于密码学而不是 pyOpenSSL。

    贡献者 本杰明佩雷托

  • 命令行芹菜报告现在报告内核版本以及其他平台详细信息。

    贡献者 Omer Katz

  • Canvas:固定和弦带有链,包括一个组中的子和弦。

    Celery 现在可以正确执行这些类型的画布中的最后一个任务:

    c = chord(
      group([
          chain(
              dummy.si(),
              chord(
                  group([dummy.si(), dummy.si()]),
                  dummy.si(),
              ),
          ),
          chain(
              dummy.si(),
              chord(
                  group([dummy.si(), dummy.si()]),
                  dummy.si(),
              ),
          ),
      ]),
      dummy.si()
    )
    
    c.delay().get()

    贡献者 Maximilien Cuony

  • Canvas:带有错误回调的复杂画布不再引发 AttributeError

    非常复杂的画布,例如 this 不再引发阻止构建它们的 AttributeError

    我们还不知道为什么会出现这个错误。

    供稿人 Manuel Vázquez Acosta

  • 命令行:在应用程序无法加载的情况下添加了正确的错误消息。

    以前,celery 崩溃时出现异常。

    我们现在打印正确的错误消息。

    贡献者 Omer Katz

  • Task:添加了 :setting:`task_default_priority` 设置。

    您现在可以使用 :setting:`task_default_priority` 设置来设置任务的默认优先级。 如果没有为特定任务提供优先级,将使用该设置的值。

    贡献者 :github_user:`madprogrammer`

  • Dependencies:将 Kombu 的最低要求版本提高到 4.3,将台球提高到 3.6。

    供稿人 Asif Saif Uddin

  • Result Backend:修复内存泄漏。

    vine 中添加对 Python 2 的完整弱引用支持后,我们重新引入了对 AsyncResult 回调承诺绑定方法的弱引用。 更多细节可以在 celery/celery#4839 中找到。

    George Psarakis提供:github_user:`monsterxx03`

  • 任务执行:修复了急切任务的往返序列化。

    在为急切任务执行往返序列化时,除非 celery.app.task.Task.apply_async() 调用中存在 serializer 参数,否则任务序列化器将始终为 JSON。 如果 serializer 参数存在但为 'pickle',则会引发异常,因为如果不指定 serialization.loads 应接受哪些内容类型,则无法反序列化 pickle 序列化对象。 Producer 的 serializer 似乎设置为 None,导致默认为 JSON 序列化。

    我们现在继续(按顺序)使用 celery.app.task.Task.apply_async() 的 serializer 参数(如果存在),或者 Producer 的序列化器(如果不存在)None . 如果 Producer 的序列化程序是 None,它将使用 Celery 应用程序的 task_serializer 配置条目作为序列化程序。

    贡献者 布雷特·杰克逊

  • Redis 结果后端celery.backends.redis.ResultConsumer 类不再假设 celery.backends.redis.ResultConsumer.start()celery.backends.redis.ResultConsumer.drain_events() 之前被调用。

    这修复了使用 Gevent 工作池时的竞争条件。

    贡献者 诺姆·库什

  • Task:添加了 :setting:`task_inherit_parent_priority` 设置。

    :setting:`task_inherit_parent_priority` 配置选项设置为 True 将使 Celery 任务继承与其链接的前一个任务的优先级。

    例子:

    c = celery.chain(
      add.s(2), # priority=None
      add.s(3).set(priority=5), # priority=5
      add.s(4), # priority=5
      add.s(5).set(priority=3), # priority=3
      add.s(6), # priority=3
    )
    @app.task(bind=True)
    def child_task(self):
      pass
    
    @app.task(bind=True)
    def parent_task(self):
      child_task.delay()
    
    # child_task will also have priority=5
    parent_task.apply_async(args=[], priority=5)

    贡献者 :github_user:`madprogrammer`

  • Canvas:添加了:setting:`result_chord_join_timeout` 设置。

    以前,celery.result.GroupResult.join() 的固定超时为 3 秒。

    :setting:`result_chord_join_timeout` 设置现在允许您更改它。

    贡献者 :github_user:`srafehi`

代码清理、测试覆盖率和 CI 改进:

  • 乔恩·杜福瑞
  • 阿西夫·赛义夫·乌丁
  • 奥默·卡茨
  • 布雷特杰克逊
  • 布鲁诺·阿拉
  • :github_user:`tothegump`
  • 博扬·约万诺维奇
  • 弗洛里安·夏尔丹
  • :github_user:`walterqian`
  • 法比安·贝克尔
  • 拉斯·林恩
  • :github_user:`madprogrammer`
  • 夏兰考特尼


文档修复:

  • 刘易斯 M。 歌舞井
  • 达什·温特森
  • 沙纳瓦斯
  • 布雷特·兰德尔
  • 普热米斯瓦夫·苏利加
  • 约书亚施密德
  • 阿西夫·赛义夫·乌丁
  • 晓东
  • 维卡斯·普拉萨德
  • 杰米·阿莱西奥
  • 拉斯·克鲁斯
  • 吉列尔梅·卡米尼亚
  • 安德里亚·拉巴列蒂
  • 意大利必丹
  • 诺亚厅
  • 彭伟康
  • 玛丽亚塔·维贾亚
  • 埃德·莫利
  • 帕维尔·亚当恰克
  • :github_user:`CoffeeExpress`
  • :github_user:`aviadatsnyk`
  • 布赖恩施拉德
  • 乔苏·巴兰德拉诺·科罗内尔
  • 汤姆克兰西
  • 塞巴斯蒂安·沃伊切霍夫斯基
  • 迈萨姆·阿扎德
  • 威廉·蒂亚特
  • 查尔斯·陈
  • 奥默·卡茨
  • 密林释迦