Celery 4.4 (Cliffs) 的新特性 — Python 文档
Celery 4.4 (Cliffs) 的新特性
- 作者
- 阿西夫赛义夫乌丁 (
auvipy at gmail.com
)
更改历史记录
What's new 文档描述了主要版本的变化,我们还有一个 Change history 列出了错误修复版本 (0.0.x) 的变化,而旧的系列存档在 History 部分.
Celery 是一个简单、灵活、可靠的分布式编程框架,用于处理海量消息,同时为操作提供使用 Python 维护分布式系统所需的工具。
它是一个专注于实时处理的任务队列,同时也支持任务调度。
Celery 拥有庞大而多样化的用户和贡献者社区,您应该在 IRC 或 我们的邮件列表 上加入我们 。
要阅读有关 Celery 的更多信息,您应该阅读 介绍 。
虽然此版本向后兼容以前的版本,但阅读以下部分很重要。
此版本在 CPython 2.7、3.5、3.6、3.7 和 3.8 上得到官方支持,在 PyPy2 和 PyPy3 上也得到支持。
目录
在升级到此版本之前,请务必阅读重要说明。
前言
4.4.0 版本继续改进我们的工作,为您提供最佳的 Python 任务执行平台。
此版本的代号为 Cliffs,这是我最喜欢的曲目之一。
此版本主要关注开发人员的错误修复和可用性改进。 解决了许多长期存在的错误、可用性问题、文档问题和次要增强问题,从而改善了整体开发人员体验。
Celery 4.4 是第一个支持 Python 3.8 和 pypy36-7.2 的版本。
由于我们现在开始开发下一代任务执行平台 Celery 5,预计在 Celery 5 稳定发布之前至少还有 4.x 版本,并将根据社区需求和支持获得至少 1 年的支持。
我们还专注于减少贡献摩擦并更新了贡献工具。
— 阿西夫·赛义夫·乌丁
贡献者墙
笔记
这堵墙是根据 git 历史自动生成的,因此遗憾的是,它不包括帮助解决更重要的事情(例如回答邮件列表问题)的人。
从 Celery 4.3 升级
请阅读下面的重要说明,因为有几个重大变化。
重要说明
支持的 Python 版本
支持的 Python 版本是:
- CPython 2.7
- CPython 3.5
- CPython 3.6
- CPython 3.7
- CPython 3.8
- PyPy2.7 7.2 (
pypy2
) - PyPy3.5 7.1 (
pypy3
) - PyPy3.6 7.2 (
pypy3
)
不再支持 Python 3.4
Celery 现在需要 Python 2.7 或 Python 3.5 及更高版本。
Python 3.4 已于 2019 年 3 月停产。 为了集中精力,我们在此版本中放弃了对 Python 3.4 的支持。
如果您仍然需要使用 Python 3.4 运行 Celery,您仍然可以使用 Celery 4.3。 但是,我们鼓励您升级到受支持的 Python 版本,因为 Python 3.4 不会再应用任何安全补丁。
昆布
从此版本开始,所需的最低版本为 Kombu 4.6.6。
台球
从此版本开始,所需的最低版本为台球 3.6.1。
Redis 消息代理
由于早期版本的 redis-py 中的多个错误导致 Celery 出现问题,我们被迫将所需的最低版本提高到 3.3.0。
Redis 结果后端
由于早期版本的 redis-py 中的多个错误导致 Celery 出现问题,我们被迫将所需的最低版本提高到 3.3.0。
DynamoDB 结果后端
DynamoDB 结果后端已获得 TTL 支持。 因此,最低 boto3 版本被提升到 1.9.178,这是第一个支持 DynamoDB TTL 的版本。
S3 结果后端
为了跟上当前的 AWS API 变化,最低 boto3 版本被提高到 1.9.125。
SQS 消息代理
为了跟上当前的 AWS API 变化,最低 boto3 版本被提高到 1.9.125。
配置
CELERY_TASK_RESULT_EXPIRES 已替换为 CELERY_RESULT_EXPIRES。
新闻
任务池
线程任务池
我们使用 concurrent.futures.ThreadPoolExecutor 重新引入了线程任务池。
之前的线程任务池是实验性的。 此外,它基于已过时的 threadpool 包。
您可以通过将 :setting:`worker_pool` 设置为“threads”或将 –pool threads 传递给 celery worker 命令来使用新的线程任务池。
结果后端
ElasticSearch 结果后端
HTTP 基本身份验证支持
通过在 URI 中提供用户名和密码,您现在可以在使用 ElasticSearch 结果后端时使用 HTTP 基本身份验证。
以前,它们被忽略,只发出未经身份验证的请求。
MongoDB 结果后端
支持认证源和认证方法
您现在可以使用 URI 选项为 MongoDB 指定 authSource 和 authMethod。 下面的 URI 就是这样做的:
mongodb://user:password@example.com/?authSource=the_database&authMechanism=SCRAM-SHA-256
有关各种选项的详细信息,请参阅 文档 。
任务
任务类定义现在可以具有重试属性
你现在可以使用 autoretry_for, retry_kwargs, retry_backoff, retry_backoff_max 和 retry_kwargs, retry_backoff_max 和 retry_jitter] 在 classX13 任务中:[X13X]
class BaseTaskWithRetry(Task):
autoretry_for = (TypeError,)
retry_kwargs = {'max_retries': 5}
retry_backoff = True
retry_backoff_max = 700
retry_jitter = False
帆布
急切地更换任务
您现在可以对急切运行的任务调用 self.replace()。 它们的工作方式与异步运行的任务完全相同。
链接组
链接组不再导致单个组。
以下用于将两个组合二为一。 现在他们一个接一个地正确执行:
>>> result = group(add.si(1, 2), add.si(1, 2)) | group(tsum.s(), tsum.s()).delay()
>>> result.get()
[6, 6]