更改历史记录 — Python 文档
更改历史记录
本文档包含 3.1.x 系列 (Cipater) 中错误修复版本的更改说明,请参阅 Celery 3.1 中的新功能 (Cipater) 以了解 Celery 3.1 中的新功能。
3.1.26
- 发布日期
- 2018-23-03 16:00 PM IST
- 发布者
- 奥默·卡茨
- 修复了由 Celery 3 和 Celery 4 工人之间的任务循环引起的崩溃。
3.1.25
- 发布日期
- 2016-10-10 下午 12:00 PDT
- 发布者
- 问庄严
要求
现在取决于 Kombu 3.0.37
修复了 3.1.24 中引入的组和弦问题(问题 #3504)。
3.1.24
- 发布日期
- 2016-09-30 04:21 PM PDT
- 发布者
- 问庄严
要求
现在取决于 Kombu 3.0.36。
现在支持来自未来 4.0 版本的任务协议 2。
运行 3.1.24 的工作线程现在能够处理使用 Celery 4.0 中引入的 新任务消息协议 发送的消息。
鼓励在发布时升级到 Celery 4.0 的用户升级到此版本作为中间步骤,因为这意味着尚未升级的工作人员将能够处理来自运行 4.0 的客户端/工作人员的消息。
Task.send_events
现在可以设置为仅禁用该任务的事件发送。定义任务时的示例:
@app.task(send_events=False) def add(x, y): return x + y
Utils:修复了与最近的 :pypi:`psutil` 版本的兼容性(问题 #3262)。
Canvas:Chord 现在将部分参数转发给它的子任务。
修复由 Tayfun Sen 贡献。
App:应用程序的参数,如
backend
、broker
等,现在被pickle 并发送到 Windows 上的子进程。修复由 Jeremy Zafran 贡献。
Deployment:通用初始化脚本现在支持在运行级别目录中进行符号链接(问题 #3208)。
部署:更新了 CentOS 脚本以与 CentOS 7 配合使用。
乔·桑福德供稿。
Events:当任务结果为空时,curses 监视器不再崩溃。
修复由董伟明贡献。
Worker:
repr(worker)
在启动过程的早期调用时会崩溃(问题 #2514)。Tasks:GroupResult 现在定义了 __bool__ 和 __nonzero__。
这是为了解决具有空结果列表的 ResultSet 或 GroupResult 在作为父结果时未与 as_tuple() 方法正确元组的问题。 这是由于 as_tuple() 方法对 ResultSet 执行逻辑和操作。
由 Colin McIntosh 贡献的修复。
Worker:修复了自动缩放相关日志消息中的错误值。
@raducc
提供的修复。文档改进
亚历山德鲁·奇里拉
迈克尔·阿奎利纳
米科·埃克斯特罗姆
米切尔·汉弗莱斯
托马斯 A. 尼尔
蒂亚戈·莫雷拉·维埃拉
尤里·西罗维茨基
@dessant
3.1.23
- 发布日期
- 2016-03-09 06:00 PM PST
- 发布者
- 问庄严
- Programs:上一个版本破坏了对 celery multi 和 celery worker --detach 参数
--hostnmame
的支持(问题 #3103)。 - Results:如果未使用 URL 进行配置,MongoDB 结果后端可能会在启动时使工作程序崩溃。
3.1.22
- 发布日期
- 2016-03-07 01:30 PM PST
- 发布者
- 问庄严
- Programs:当使用某些结果后端时,worker 会在
backend.as_uri()
上启动时立即崩溃(问题 #3094)。 - Programs: celery multi/celery worker --detach 会创建一个无关的日志文件,包括文字格式(例如
%I
) 在文件名中(问题 #3096)。
3.1.21
- 发布日期
- 2016-03-04 11:16 上午 太平洋标准时间
- 发布者
- 问庄严
要求
现在取决于 Kombu 3.0.34。
现在取决于
billiard
3.3.0.23。
Prefork pool:修复了 Linux epoll 上的 100% CPU 循环(问题 #1845)。
也可能修复:问题 #2142,问题 #2606
Prefork pool:修复与退出进程相关的内存泄漏(问题 #2927)。
Worker:修复了在尝试审查 MongoDB 中的密码和缓存结果后端 URL 时启动时崩溃的问题(Issue #3079、Issue #3045、Issue #3049、Issue #3068、Issue #3073)。
修复由 Maxime Verger 贡献。
Task:如果倒计时/过期时间小于 -2147483648(问题 #3078),现在会引发异常。
程序:celery shell --ipython 现在与更新的 :pypi:`IPython` 版本兼容。
Programs:inspect/control 发出的 DuplicateNodeName 警告现在包括返回的节点名称列表。
塞巴斯蒂安·卡林诺夫斯基供稿。
Utils:
LimitedSet
的.discard(item)
方法实际上并未删除该项目(问题 #3087)。修复由戴夫史密斯贡献。
Worker:节点名称格式现在对不匹配的格式键发出更少的混乱错误消息(问题#3016)。
Results:RPC/AMQP 后端:修复了 JSON 异常的反序列化(问题 #2518)。
修复由 Allard Hoeve 贡献。
Prefork pool:进程队列损坏错误消息现在包括原始异常引发。
文档:包括以下改进:
杰夫·威德曼。
3.1.20
- 发布日期
- 2016-01-22 06:50 下午 世界标准时间
- 发布者
- 问庄严
要求
现在取决于 Kombu 3.0.33。
现在取决于
billiard
3.3.0.22。包括适用于 Microsoft Windows x86 和 x86_64 的二进制轮子!
Task:错误邮件现在默认使用
utf-8
字符集(问题 #2737)。Task:重试现在转发原始邮件标头(问题 #3017)。
Worker:Bootsteps 现在可以连接到
on_node_join
/leave
/lost
。有关示例,请参阅 属性 。
Events:修复了 DST 时区的处理(问题 #2983)。
结果:Redis 后端停止遵守某些设置。
由 Jeremy Llewellyn 提供。
Results:数据库后端现在正确支持 JSON 异常(问题 #2441)。
Results:Redis
new_join
没有正确调用任务 errbacks 出现和弦错误(问题 #2796)。结果 :恢复Redis与Python的兼容性 :pypi:`redis` < 2.10.0(问题 #2903)。
Results:修复了和弦错误处理的罕见问题(问题 #2409)。
Tasks:在 :setting:`CELERY_ROUTES` 中使用队列名称值现在可以再次工作(问题 #2987)。
General:现在在报告输出中清理了结果后端密码(问题 #2812,问题 #2004)。
Configuration:当结果后端配置指向一个模块而不是一个类时,现在会给出有用的错误消息(问题#2945)。
Results:由 JSON 序列化的 worker 发送的异常现在由 pickle 配置的 worker 正确处理。
程序:
celery control autoscale
现在可以工作(问题 #2950)。程序:
celery beat --detached
现在在 fork 回调后运行。General:修复了 Python 3.5 上的 LRU 缓存实现(问题 #2897)。
由丹尼斯·布拉卡恩提供。
Python 3.5 的
OrderedDict
在迭代时不允许突变。 如果使用大于最大大小的 dict 调用它,则会中断“更新”。此提交将代码更改为不迭代 dict 的版本,并且还应该更快一点。
Init-scripts:当找不到pid文件时,beat init-script现在可以正确地将服务报告为关闭。
埃里克·扎罗尼
Beat:为某些存储后端错误添加了损坏的调度程序文件的清理(问题 #2985)。
修复由 Aleksandr Kuznetsov 贡献。
Beat:现在即使日程为空也会同步日程。
由 Colin McIntosh 贡献的修复。
- Supervisord:在:pypi:`supervisord`中设置更高的进程优先级
例如。
乔治·坦提拉斯供稿。
文档:包括以下改进:
:github_user:`Bryson` Caleb Mingle Christopher Martin Dieter Adriaenssens Jason Veatch Jeremy Cline Juan Rossi Kevin Harvey Kevin McCarthy Kirill Pavlov Marco Buttu :github_user:`Mayflower` Mherering Movsisyan [X4 Michael FloX] ]:github_user:`michael-k` Nathaniel Varona Rudy Attias Ryan Luckie Steven Parker :github_user:`squfrans` Tadej Janež TakesxiSximada Tom S
3.1.19
- 发布日期
- 2015-10-26 01:00 下午 世界标准时间
- 发布者
- 问庄严
要求
现在取决于 Kombu 3.0.29。
现在取决于
billiard
3.3.0.21。
Results:修复了 MongoDB 结果后端 URL 解析问题(Issue celery/kombu#375)。
Worker:任务请求现在可以在 delivery_info 中正确设置
priority
。修复由 Gerald Manipon 贡献。
Beat:设置键时,PyPy 搁架可能会升高
KeyError
(问题 #2862)。程序:celery beat --deatched 现在在 PyPy 上工作。
修复由 Krzysztof Bujniewicz 贡献。
Results:Redis 结果后端现在可确保清理所有管道。
贾斯汀·帕特林供稿。
Results:Redis 结果后端现在允许在结果后端 URL 的查询部分设置超时。
例如
CELERY_RESULT_BACKEND = 'redis://?timeout=10'
贾斯汀·帕特林供稿。
Results:
result.get
现在可以正确处理异常值设置为None
的故障(问题 #2560)。Prefork pool:修正属性错误
proc.dead
。Worker:修复了禁用八卦/心跳时工人挂起的问题(问题 #1847)。
修复由 Aaron Webber 和 Bryan Helmig 贡献。
Results:MongoDB 结果后端现在支持 pymongo 3.x(问题 #2744)。
修复由 Sukrit Khera 贡献。
结果:RPC/AMQP 后端没有正确反序列化异常(问题 #2691)。
修复由 Sukrit Khera 贡献。
Programs:修复了 celery amqp 的
basic_publish
(问题 #2013)的问题。Worker:Embedded beat 现在可以为线程/进程正确设置应用程序(问题 #2594)。
文档:修复了许多改进和错别字。
贡献者:
卡洛斯·加西亚-杜布斯 D. Yu :github_user:`jerry` Jocelyn Delalande Josh Kupershmidt Juan Rossi :github_user:`kanemra` Paul Pearce Pavel Savchenko Sean Wang Seungha Kim Zhaorong Ma
3.1.18
- 发布日期
- 2015-04-22 05:30 下午 世界标准时间
- 发布者
- 问庄严
要求
现在取决于 Kombu 3.0.25。
现在取决于
billiard
3.3.0.20。
Django:现在支持 Django 1.8(问题 #2536)。
修复由 Bence Tamas 和 Mickaël Penhard 贡献。
Results:MongoDB 结果后端现在与 pymongo 3.0 兼容。
Fatih Sucu 提供的修复程序。
Tasks:修复了仅在任务具有多个回调时发生的错误(问题 #2515)。
NotSqrt 提供的修复。
Commands:预加载选项现在支持
--arg value
语法。修复由约翰安德森贡献。
Compat:错误导致
celery.log.setup_logging_subsystem
未定义。修复由 Gunnlaugur Thor Briem 贡献。
init-scripts:beat 通用 init-script 现在使用
/bin/sh
而不是 bash(问题 #2496)。修复由 Jelle Verstraaten 贡献。
Django:修复了在验证模型时记录中有时会出现的
TypeError
。修复由亚历山大贡献。
Commands:Worker 现在支持新的
--executable
参数,可与celery worker --detach
一起使用。由 Bert Vanderbauwhede 提供。
Canvas:修复了和弦解锁回退任务中的崩溃问题(问题 #2404)。
Worker:修复了启用
--autoscale
时发生的罕见崩溃(问题 #2411)。Django:在启用 Django
CONN_MAX_AGE
设置时正确回收工作 Django 数据库连接(问题 #2453)。由卢克·伯登 (Luke Burden) 提供的修复程序。
3.1.17
- 发布日期
- 2014-11-19 03:30 下午 世界标准时间
- 发布者
- 问庄严
不要启用 CELERYD_FORCE_EXECV 设置!
如果您使用 RabbitMQ 或 Redis 传输,请检查您的配置并禁用此选项。
在 3.1 之后启用此选项意味着将禁用基于异步的 prefork 池,这很容易导致不稳定。
要求
现在取决于 Kombu 3.0.24。
包括 Celery 3.2 中新的 Qpid 传输,向后移植以支持那些可能仍然需要 Python 2.6 兼容性的人。
现在取决于
billiard
3.3.0.19。celery[librabbitmq]
现在依赖于 librabbitmq 1.6.1。
Task:在 Python 文档中的示例
LocalTimezone
实现在 Python 3.4 中不再适用后,ETA/倒计时任务的计时关闭。 (问题#2306)。Task:提升
Ignore
不再发送task-failed
事件(问题 #2365)。Redis 结果后端:修复未绑定的本地错误。
修复由 Thomas French 贡献。
Task:如果
link
是签名列表,则回调未正确调用(问题 #2350)。Canvas:链和组现在处理 json 序列化签名(问题 #2076)。
Results:
.join_native()
会意外地将STARTED
状态视为准备好(问题 #2326)。这可能会导致在使用启用了 :setting:`CELERY_TRACK_STARTED` 设置的和弦时使用无效参数调用和弦回调。
Canvas:现在为所有画布基元设置了
chord_size
属性,确保更多组合适用于 Redis 的new_join
优化(问题 #2339)。Task:修复了在所有情况下应用无法正确传播到
trace_task
的问题。:github_user:`kristaps` 贡献的修复。
Worker:从现在与时区关联的任务消息中过期。
修复由 Albert Wang 提供。
Cassandra 结果后端:修复了使用详细模式时的问题。
在详细模式下使用 Cassandra 后端时,尝试检索结果时回归会导致错误。
修复由 Gino Ledesma 贡献。
Mongodb 结果后端:pickling 后端实例现在将包含原始 URL(问题 #2347)。
修复由 Sukrit Khera 贡献。
Task:异常信息未正确设置为引发
Reject
的任务(问题 #2043)。Worker:现在从工作状态数据库加载已撤销任务集时删除重复项(问题 #2336)。
celery.contrib.rdb:修复了
rdb.set_trace
从错误的帧调用停止的问题。:github_user:`llllllllll` 贡献的修复。
Canvas:
chain
和chord
现在可以是不可变的。Canvas:
chord.apply_async
现在将保留在self.args
中设置的部分参数(问题 #2299)。Results:小的重构,以便结果在所有结果后端以相同的方式解码。
Logging:
processName
格式是在 Python 2.6.2 中引入的,因此为了兼容性,现在在使用早期版本时排除此格式(问题 #1644)。
3.1.16
- 发布日期
- 2014-10-03 06:00 下午 世界标准时间
- 发布者
- 问庄严
Worker:3.1.15 破坏了
-Ofair
行为(问题 #2286)。如果启用
-Ofair
,此回归可能导致所有任务在单个子进程中执行。Canvas:
celery.signature
现在可以在所有情况下正确转发应用程序参数。Task:
.retry()
在没有当前异常的情况下调用时没有正确引发异常。由 Andrea Rabbaglietti 贡献的修复。
Worker:
enable_events
远程控制命令错误地禁用了与工人相关的事件(问题 #2272)。由 Konstantinos Koukopoulos 贡献的修复。
Django:在使用
app.autodiscover_tasks()
时,在 INSTALLED_APPS 中添加对 Django 1.7 类名的支持(问题 #2248)。Sphinx:
celery.contrib.sphinx
现在在 Python 3 上使用getfullargspec
(问题 #2302)。Redis/Cache Backends:如果和弦中的一个或多个任务由于某种原因多次执行,则和弦现在最多运行一次。
3.1.15
- 发布日期
- 2014-09-14 11:00 下午 世界标准时间
- 发布者
- 问庄严
- Django:现在确保在导入任何任务模块之前调用
django.setup()
(Django 1.7 兼容性,问题 #2227) - Results:
result.get()
在finally
调用中调用backend.get_task_meta
导致 AMQP 结果后端队列未正确清理(问题 #2245),行为不当。
3.1.14
- 发布日期
- 2014-09-08 03:00 下午 世界标准时间
- 发布者
- 问庄严
要求
现在取决于 Kombu 3.0.22。
Init-scripts:通用 worker init-scripts
status
命令现在可以获得准确的 pidfile 列表(问题 #1942)。- Init-scripts:通用节拍脚本现在实现了
status
命令。
约翰·惠特洛克供稿。
- Init-scripts:通用节拍脚本现在实现了
Commands:Multi 现在将信息输出写入 stdout 而不是 stderr。
Worker:现在忽略
pool.restart
的未实现错误(问题 #2153)。Task:在 Eager 模式下执行时,重试不再引发重试异常(问题 #2164)。
AMQP 结果后端 :现在确保
on_interval
至少每秒调用一次,以阻止调用以正确传播父错误。Django:与 Windows 上的 Django 1.7 兼容(问题 #2126)。
Programs:
--umask
参数现在可以指定为八进制(如果以 0 开头)或十进制。
3.1.13
安全修复
[安全性:CELERYSA-0002] 不安全的默认 umask。
默认情况下,用于守护 Celery 工作器服务的内置实用程序设置了一个不安全的 umask (umask 0)。
这意味着工作人员创建的任何文件或目录最终都将具有全局可写权限。
特别感谢 Red Hat 最初发现并报告该问题!
此版本将不再默认设置默认 umask,因此如果未设置,将使用父进程的 umask。
新闻
要求
现在取决于 Kombu 3.0.21。
现在取决于
billiard
3.3.0.18。
App:
backend
参数现在也设置 :setting:`CELERY_RESULT_BACKEND` 设置。Task:
signature_from_request
现在传播reply_to
,以便 RPC 后端处理重试任务(问题 #2113)。Task:如果发送重试消息失败,
retry
将不再尝试重新排队任务。引发不相关的异常可能会导致消息循环,因此最好删除此行为。
Beat:通过始终提前 0.010 秒唤醒来解释标准的 1 毫秒漂移。
这将调整延迟,以便周期性任务在每次调用后不会移动 1 毫秒。
文档修复
由 Yuval Greenfield、Lucas Wiman、 提供:github_user:`nicholsonjf`。
Worker:删除了可能导致错误被屏蔽的过时断言语句(问题 #2086)。
3.1.12
- 发布日期
- 2014-06-09 10:12 下午 世界标准时间
- 发布者
- 问庄严
要求
现在取决于 Kombu 3.0.19。
App:由于分叉后处理程序中的错误(问题#2055),分叉后连接没有被关闭。
这可能通过在使用 RabbitMQ 时导致帧错误来表现出来。 (
Unexpected frame
)。Django:
django.setup()
在使用 Django 1.7 时被调用太晚(问题 #1802)。Django:修复了使用 Django 时事件时区的问题(
Substantial drift
)。Celery 没有考虑到 Django 修改了
time.timeone
属性和好友。Canvas:当链接选项是标量值时,
Signature.link
现在可以工作(问题 #2019)。Prefork pool:修复了从事件循环中删除文件描述符时的竞争条件。
修复由 Roger Hu 提供。
Prefork pool:改进了在子进程之间划分任务的解决方案。
当有许多子进程时,此更改应该会提高性能,并且还可以减少将两个后续任务写入同一个子进程的机会。
Worker:现在忽略未知事件类型,而不是崩溃。
修复由 Illes Solt 贡献。
Programs:celery worker --detach 在使用
C_FAKEFORK
时不再关闭打开的文件描述符,以便可以看到工作人员的输出。Programs:celery worker --detach 的默认工作目录现在是当前工作目录,而不是
/
。Canvas:当使用
app
关键字参数时,signature(s, app=app)
没有将序列化签名升级到它们的原始类 (subtask_type
)。Control:控制命令发出的
duplicate nodename
警告现在显示重复的节点名称。Tasks:现在可以在没有成员的结果集上调用
ResultSet.get()
。修复由 Alexey Kotlyarov 提供。
App:修复了
app.connection_or_acquire
的奇怪回溯修改问题。Programs:celery multi stopwait 命令现已记录在使用中。
Other:修复了
PromiseProxy
在尝试评估承诺时出现错误时的清理问题。Other:用于审查配置值的实用程序现在可以处理非字符串键。
修复由 Luke Pomfrey 贡献。
Other:
inspect conf
命令不能很好地处理非字符串键。修复由 Jay Farrimond 贡献。
Programs:修复了 celery worker --detach 中的参数处理问题。
修复由 Dmitry Malinovsky 贡献。
Programs:celery worker --detach 没有转发工作目录选项(问题 #2003)。
Programs:celery检查注册不再包含内置任务列表。
Worker:未正确处理引导步骤的
requires
属性(问题 #2002)。Eventlet:eventlet 池现在支持
pool_grow
和pool_shrink
远程控制命令。由 Mher Movsisyan 提供。
Eventlet:eventlet 池现在实现了 :program:
celery inspect stats
的统计。由 Mher Movsisyan 提供。
文档:阐明了
Task.rate_limit
行为。由乔纳斯·哈格提供。
文档:
AbortableTask
示例现在更新为使用新的 API(问题 #1993)。文档:安全文档示例使用过时的导入。
修复由 Ian Dees 贡献。
Init-scripts:CentOS init-scripts 没有引用
CELERY_CHDIR
。修复由 :github_user:`feast` 贡献。
3.1.11
- 发布日期
- 2014-04-16 11:00 下午 世界标准时间
- 发布者
- 问庄严
现在与 RabbitMQ 3.3.0 兼容
使用 RabbitMQ 3.3 时需要运行 Celery 3.1.11 或更高版本,如果使用
librabbitmq
模块,还必须升级到 librabbitmq 1.5.0:$ pip install -U librabbitmq
要求:
现在取决于 Kombu 3.0.15。
现在取决于 台球 3.3.0.17。
捆绑包
celery[librabbitmq]
现在依赖于librabbitmq
1.5.0。
Tasks::setting:`CELERY_DEFAULT_DELIVERY_MODE` 设置被忽略(问题 #1953)。
Worker:新增
celery worker --heartbeat-interval
可用于更改发送事件心跳之间的时间(以秒为单位)。由 Matthew Duggan 和 Craig Northway 提供。
App:修复了创建大量临时应用程序实例时发生的内存泄漏(问题 #1949)。
MongoDB:使用非 MongoDB 传输的 SSL 配置会破坏 MongoDB 结果后端(问题 #1973)。
由布赖恩·鲍特斯 (Brian Bouterse) 提供的修复程序。
Logging:颜色格式化程序意外修改了
record.msg
(Issue #1939)。Results:修复了多次存储任务轨迹的问题,导致
result.collect()
挂起(Issue #1936,Issue #1943)。结果:
ResultSet
现在实现了.backend
属性以与AsyncResult
兼容。结果:
.forget()
现在也清除本地缓存。Results:修复了多次调用
result._set_cache
的问题(问题 #1940)。Results:
join_native
填充结果缓存,即使禁用。Results:YAML 结果序列化器现在应该能够处理存储异常。
Worker:不再为预期错误发送任务错误电子邮件(在
@task(throws=(..., )))
.Canvas:修复了使用 JSON 序列化程序时异常反序列化的问题(Issue #1987)。
Eventlet:修复了
celery.contrib.batches
尝试取消不存在的计时器时崩溃(问题 #1984)。现在可以导入
celery.version_info_t
和celery.five
(问题 #1968)。
3.1.10
- 发布日期
- 2014-03-22 09:40 下午 世界标准时间
- 发布者
- 问庄严
要求:
现在取决于 Kombu 3.0.14。
结果:
SQLAlchemy 数据库后端的可靠性改进。 以前,来自 MainProcess 的连接不正确地与工作人员共享。 (问题 #1786)
Redis: 关于事件的重要说明(问题 #1882)。
Redis 有一个新的传输选项,可以让监视器过滤掉不需要的事件。 在工作程序中启用此选项将大大提高性能:
BROKER_TRANSPORT_OPTIONS = {'fanout_patterns': True}
启用此选项意味着您的工作人员将无法看到禁用该选项的工作人员(或正在运行旧版本的 Celery),因此如果您启用它,请确保在所有节点上都这样做。
请参阅 警告 。
这将是 Celery 3.2 中的默认设置。
Results:
@AsyncResult
对象现在保留任务最终状态的本地缓存。这意味着最终可以禁用全局结果缓存,您可以通过将 :setting:`CELERY_MAX_CACHED_RESULTS` 设置为
-1
来实现。 然后缓存的生命周期将绑定到结果对象的生命周期,这将是 Celery 3.2 中的默认行为。Events:现在仅每个节点名称记录一次“实质性漂移”警告消息(问题#1802)。
Worker:在使用 prefork 池时,能够为每个子进程使用一个日志文件。
这可以通过对日志文件名使用新的
%i
和%I
格式说明符来启用。 参见 Prefork 池进程索引 。Redis:新的实验性和弦连接实现。
这是在使用 Redis 结果后端时对和弦的优化,其中连接操作现在比以前的策略快得多并且使用的资源更少。
可以在结果后端 URL 中设置新选项:
CELERY_RESULT_BACKEND = 'redis://localhost?new_join=1'
这必须手动启用,因为它与不使用它的工作人员和客户端不兼容,因此如果您决定使用它,请确保在所有客户端和工作人员中启用该选项。
Multi:使用
-opt:index
(例如,-c:1
),索引现在总是指节点在参数列表中的位置。这意味着在指定节点名称列表时引用数字将起作用,而不仅仅是数字范围:
celery multi start A B C D -c:1 4 -c:2-4 8
在这个例子中
1
指的是节点 A(因为它是列表中的第一个节点)。Signals:
Signal.connect
的 sender 参数现在可以是代理对象,这意味着它可以与任务装饰器一起使用(问题 #1873)。Task:回归导致
Task.retry
的queue
参数被忽略(问题 #1892)。App:修复了
config_from_envvar()
的错误信息。修复由 Dmitry Malinovsky 贡献。
Canvas:和弦现在可以包含一组其他和弦(问题 #1921)。
Canvas:现在可以在使用 amqp 结果后端时组合和弦(回调也是和弦的和弦)。
Canvas:即使链中的任务之一是
ignore_result=True
(问题 #1905),调用result.get()
链任务现在也将完成。Canvas:Worker 现在也记录和弦错误。
Canvas:引发异常的和弦任务现在将导致对和弦回调的任何错误反馈 (
link_error
) 也将被调用。Results:SQLAlchemy 数据库后端的可靠性改进(问题 #1786)。
以前来自
MainProcess
的连接被子进程不正确地继承。修复由 Ionel Cristian Mărieș 贡献。
Task:现在使用 group 原语调用任务回调和 errback。
Task:
Task.apply
现在可以正确设置request.headers
(问题 #1874)。Worker:修复了 :pypi:`supervisor` 启动 worker 时发生的
UnicodeEncodeError
。Codeb Fan 贡献的修复。
Beat:不再尝试升级新创建的数据库文件(问题 #1923)。
Beat:新设置 :setting:
CELERYBEAT_SYNC_EVERY
可用于通过指定每次同步之间发送的任务数来控制文件同步。由克里斯克拉克提供。
Commands:如果未安装
psutil
模块,celery inspect memdump 不再崩溃(问题 #1914)。Worker:远程控制命令现在总是接受 json 序列化消息(问题 #1870)。
Worker:Gossip 现在会丢弃它错误接收的任何与任务相关的事件(问题 #1882)。
3.1.9
- 发布日期
- 2014-02-10 06:43 下午 世界标准时间
- 发布者
- 问庄严
要求:
现在取决于 Kombu 3.0.12。
Prefork pool:更好地处理退出的子进程。
修复由 Ionel Cristian Mărieș 贡献。
Prefork pool:现在确保在清理进程时从集线器中删除所有文件描述符。
修复由 Ionel Cristian Mărieș 贡献。
新的 Sphinx 扩展 :用于任务的自动文档文档:
celery.contrib.spinx
(问题 #1833)。Django:现在适用于 Django 1.7a1。
Task:Task.backend 现在是一个属性,如果没有为任务指定自定义后端,它会转发到
app.backend
(问题 #1821)。通用初始化脚本:修复了停止命令中的错误。
修复由 Rinat Shigapov 贡献。
Generic init-scripts:修复了与 GNU stat 的兼容性。
修复由 Paul Kilgo 贡献。
Generic init-scripts:修复了与最小 dash shell 的兼容性(问题 #1815)。
Commands:celery amqp basic.publish 命令工作不正常。
修复由安德烈沃罗诺夫贡献。
Commands:如果 pidfile 存在并且进程仍然存在,则不再发出错误消息(问题#1855)。
Commands:预加载选项缺少参数的更好的错误消息(问题 #1860)。
Commands: celery -h 由于参数解析器中的错误而无法工作(问题 #1849)。
Worker:改进了消息解码错误的错误消息。
Time:现在可以正确解析 ISO 8601 日期字符串中的 Z 时区说明符。
修复由 Martin Davidsson 贡献。
Worker:现在使用 negotiated 心跳值来计算运行心跳检查的频率。
Beat:修复了第一次调度迭代后节拍挂起的问题(问题 #1822)。
修复由 Roger Hu 提供。
Signals::signal:`before_task_publish` 的标头参数现在总是一个字典实例,以便信号处理程序可以添加标头。
Worker:消息头列表现在包含在消息相关的错误中。
3.1.8
- 发布日期
- 2014-01-17 10:45 下午 世界标准时间
- 发布者
- 问庄严
要求:
现在取决于 Kombu 3.0.10。
现在取决于 台球 3.3.0.14。
Worker:事件循环在消费者重启时没有正确重新初始化,这将迫使工人继续在 Linux 上关闭
epoll
实例,从而导致崩溃。事件: 修复了心跳和任务事件可能导致数据未按排序顺序保存的问题。
因此,即使远程节点及时发送心跳,这也会迫使工作人员记录“心跳丢失”事件。
Results:pickle 序列化器不再将组结果转换为元组,并将保留原始类型(问题 #1750)。
结果:
ResultSet.iterate
is now pending deprecation.该方法将在 3.2 版中弃用并在 3.3 版中删除。
请改用
result.get(callback=)
(或result.iter_native()
,如果可用)。Worker|eventlet/gevent:回归导致 Control-c 对关闭无效。
Redis 结果后端: 现在使用管道来存储状态更改以提高性能。
由 Pepijn de Vos 提供。
Redis 结果后端: 如果断开连接,现在将重试存储结果。
Worker|gossip:修复另一个节点离开时发生的属性错误。
Brodie Rao 提供的修复程序。
Generic init-scripts: 现在在启动时运行检查以验证所有配置脚本是否由 root 拥有并且它们不是世界/组可写的。
init-script 配置是一个由 root 执行的 shell 脚本,因此这是一种预防措施,以确保用户不会让这个文件容易受到非特权用户的更改。
笔记
请注意,升级 Celery 不会更新 init-scripts,而是需要从源代码分发中手动复制改进的版本:https://github.com/celery/celery/tree/3.1/extra/generic- init.d
Commands:celery purge命令现在警告该操作将删除所有任务并提示用户确认。
添加了一个新的
-f
,可用于禁用交互模式。Task:在错误上下文之外调用时,
.retry()
没有提高exc
参数中提供的值( 问题 #1755)。Commands: celery multi 命令没有将命令行配置转发给目标 worker。
更改意味着 multi 会将参数行末尾的特殊
--
参数和配置内容转发给指定的工作人员。使用命令行配置从 celery multi 设置代理心跳的示例:
$ celery multi start 1 -c3 -- broker.heartbeat=30
修复由 Antoine Legrand 贡献。
帆布:
chain.apply_async()
now properly forwards execution options.由 Konstantin Podshumok 贡献的修复。
Redis 结果后端: 现在采用
connection_pool
参数,可用于更改连接池类/构造函数。Worker: 现在截断由调试严重性的池记录的非常长的参数和关键字参数。
Worker: Worker 现在关闭 :sig:`SIGHUP`(回归)上的所有打开文件(问题 #1768)。
Brodie Rao 提供的修复
Worker: 当 Worker 启动阶段未完成时,将不再接受远程控制命令(问题 #1741)。
命令: 事件转储实用程序(celery events -d)的输出现在可以通过管道传输到其他命令中。
文档: macOS 的 RabbitMQ 安装说明已更新为使用现代 Homebrew 实践。
由陈乔恩贡献。
命令: celery inspect conf 实用程序现在可以使用。
命令: 并非所有命令都遵守
--no-color
参数( 问题 #1799)。App: 修复了
autodiscover_tasks()
的罕见错误(问题 #1797)。分布: sphinx 文档现在总是将父目录添加到路径,以便当前的 Celery 源代码用作 API 文档的基础( 问题 #1782)。
文档: :pypi:`主管` examples contained an extraneous ‘-’ in a
--logfile
argument example.修复由 Mohammad Almeer 贡献。
3.1.7
- 发布日期
- 2013-12-17 06:00 下午 世界标准时间
- 发布者
- 问庄严
重要说明
初始化脚本安全改进
在通用初始化脚本(用于 celeryd
和 celerybeat
)之前将删除权限的责任委托给目标应用程序的地方,它现在将使用 su
代替,以便Python 程序不受超级用户权限的信任。
这不是对任何已知漏洞的反应,但它会限制将来滥用权限提升错误的可能性。
你必须从这个目录手动升级初始化脚本:https://github.com/celery/celery/tree/3.1/extra/generic-init.d
AMQP 结果后端
3.1 版本意外地将 amqp 后端配置为默认非持久性。
尝试设置或检索任务的结果时,从 3.0 升级会出现“不等效”错误。 除非您手动设置持久性设置:
CELERY_RESULT_PERSISTENT = True
此版本恢复了以前的值,因此如果您已经通过删除现有交换来强制升级,则必须通过设置 CELERY_RESULT_PERSISTENT = False
保留配置或再次删除 celeryresults
交换。
同步子任务
等待子任务结果的任务现在将在使用预分叉池时发出 RuntimeWarning
警告,并且在 3.2 中这将导致引发异常。
通过等待子任务来阻塞任务是不合法的,因为这很可能导致资源匮乏,并在使用 prefork 池时最终死锁(另请参阅 避免启动同步子任务 )。
如果您真的知道自己在做什么,则可以通过将操作移到白名单块中来避免警告(以及将来引发的异常):
from celery.result import allow_join_result
@app.task
def misbehaving():
result = other_task.delay()
with allow_join_result():
result.get()
另请注意,如果您在使用 prefork 池时等待任何形式的子任务的结果,您还必须使用 worker -Ofair 选项 禁用池预取行为。
修复
现在取决于 Kombu 3.0.8。
现在取决于
billiard
3.3.0.13事件:修复了与将浮点数作为
decimal.Decimal
发送的非标准 json 库的兼容性(问题 #1731)事件:状态工作者对象现在总是定义属性:
active
、processed
、loadavg
、sw_ident
、sw_ver
和sw_sys
]。Worker:现在记录处理的任务总数,而不仅仅是按类型 (
all_active_count
)。初始化脚本:修复了当初始化脚本符号链接到运行级别(例如,
S02celeryd
)时读取配置文件的问题。 (问题#1740)。这也删除了一个很少使用的功能,您可以在其中符号链接脚本以提供替代配置。 您改为复制脚本并给它一个新名称,但也许更好的解决方案是向
CELERYD_OPTS
提供参数以将它们分开:CELERYD_NODES="X1 X2 Y1 Y2" CELERYD_OPTS="-A:X1 x -A:X2 x -A:Y1 y -A:Y2 y"
后备和弦解锁任务现在总是在和弦标题之后调用(问题 #1700)。
这意味着如果发送标头出错,则不会启动解锁任务。
Celery 命令:修复了某些控制命令的参数问题。
由 Konstantin Podshumok 贡献的修复。
修复了
utcoffset
中 DST 中偏移量完全错误的错误(问题 #1743)。Worker:尝试序列化任务结果时发生的错误现在会导致任务被标记为失败和
kombu.exceptions.EncodingError
错误。修复由 Ionel Cristian Mărieș 贡献。
带有
-B
参数的 Worker 没有正确关闭 beat 实例。Worker:
%n
和%h
格式现在也支持--logfile
、--pidfile
和--statedb
参数。示例:
$ celery -A proj worker -n foo@%h --logfile=%n.log --statedb=%n.db
Redis/Cache 结果后端:如果在尝试加入和弦时键被逐出,现在将超时。
回退解锁和弦任务现在提高
Retry
,以便工作人员正确记录重试。Multi:将不再应用 Eventlet/gevent 猴子补丁(问题 #1717)。
Redis 结果后端:现在支持 UNIX 套接字。
与 Redis 代理传输一样,结果后端现在也支持使用
redis+socket:///tmp/redis.sock
URL。由 Alcides Viamontes Esquivel 提供。
事件:客户端发送的事件被误认为是工作相关的事件(问题 #1714)。
对于
events.State
,任务现在具有Task.client
属性,该属性在接收到task-sent
事件时设置。此外,客户端逻辑时钟与集群不同步,因此它们生活在“时间泡沫”中。 因此,出于这个原因,监视器将不再尝试与客户端发送的事件的时钟合并,而是会使用偏斜为 -1 的当前时钟来伪造该值。
Prefork 池:用于查找终止进程的方法存在缺陷,因为它没有考虑丢失的
popen
对象。画布:
group
和chord
现在可以使用匿名签名,只要组/和弦对象与应用程序实例相关联(问题 #1744)。您可以使用
group(..., app=app)
传递应用程序。
3.1.6
- 发布日期
- 2013-12-02 06:00 下午 世界标准时间
- 发布者
- 问庄严
现在取决于
billiard
3.3.0.10。现在取决于 Kombu 3.0.7。
修复了 Mingle 导致工人在启动时挂起的问题(问题 #1686)。
Beat:会尝试两次放弃权限(问题 #1708)。
Windows:修复了
geteuid
不可用的错误(问题 #1676)。任务现在可以提供预期错误类别的列表(问题 #1682)。
该列表应仅包括任务在正常操作期间预计会出现的错误:
@task(throws=(KeyError, HttpNotFound))
引发异常时会发生什么取决于错误类型:
预期错误(包含在
Task.throws
中)将使用严重性
INFO
进行记录,并排除回溯。意外错误
将使用严重性
ERROR
进行记录,包括回溯。
缓存结果后端现在与 Python 3 兼容(问题 #1697)。
CentOS 初始化脚本:现在与 SysV 风格的初始化符号链接兼容。
修复由乔纳森乔丹贡献。
事件:修复了未定义任务名称时的问题(问题 #1710)。
修复由 Mher Movsisyan 贡献。
任务:修复未绑定的本地错误(问题 #1684)。
修复由 Markus Ullmann 贡献。
画布:现在展开只有一项任务的组(优化)(问题 #1656)。
任务:修复了 ETA 和时区的问题。
修复由 Alexander Koval 贡献。
Django:Worker 现在执行模型验证(问题 #1681)。
当使用不正确的参数时,任务装饰器现在会发出更少的混淆错误(问题#1692)。
任务:新方法
Task.send_event
可用于将自定义事件发送到 Flower 和其他监视器。修复了与非抽象任务类的兼容性问题
来自客户端的事件现在使用新的节点名称格式 (
gen<pid>@<hostname>
)。修复了在解释器关闭时未定义 Callable 的罕见错误(问题 #1678)。
修复由尼克约翰逊贡献。
修复了 Python 2.6 兼容性(问题 #1679)。
3.1.5
- 发布日期
- 2013-11-21 06:20 下午 世界标准时间
- 发布者
- 问庄严
现在取决于 Kombu 3.0.6。
现在取决于
billiard
3.3.0.8应用程序:
config_from_object
现在是懒惰的(问题 #1665)。应用程序:
autodiscover_tasks
现在懒惰了。Django 用户现在应该在 lambda 中包装对设置对象的访问:
app.autodiscover_tasks(lambda: settings.INSTALLED_APPS)
这可确保不会过早准备设置对象。
修复了某些用户遇到的
--app
参数的回归(问题 #1653)。工人:即使
--detach
未启用,现在也尊重--uid
和--gid
参数。Beat:即使
--detach
未启用,现在也会尊重--uid
和--gid
参数。Python 3:修复了启用 worker
-B
参数时发生的无法排序的错误。celery.VERSION
现在是一个命名元组。maybe_signature(list)
现在递归应用(问题 #1645)。celery shell
命令:修复了IPython.frontend
弃用警告。默认应用程序不再包含内置修复程序。
这修复了
celery multi
会在进入目标工作目录之前尝试加载 Django 设置模块的错误。Django 守护程序教程已更改。
使用新的项目布局时,用户不再需要在
/etc/default/celeryd
中明确导出DJANGO_SETTINGS_MODULE
。Redis 结果后端:到期值现在可以为 0(问题 #1661)。
审查设置现在考虑非字符串键(问题 #1663)。
应用程序:新增
autofinalize
选项。当访问任务注册表时,应用程序会自动完成。 您现在可以禁用此行为,以便引发异常。
示例:
app = Celery(autofinalize=False) # raises RuntimeError tasks = app.tasks @app.task def add(x, y): return x + y # raises RuntimeError add.delay(2, 2) app.finalize() # no longer raises: tasks = app.tasks add.delay(2, 2)
工作人员在关机期间没有发送监控事件。
工人:当与不受支持的传输一起使用时,混合和八卦现在会自动禁用(问题#1664)。
celery
命令:预加载选项现在支持罕见的--opt value
格式(问题 #1668)。celery
命令:意外删除了出现在子命令之前的选项,现在将这些选项移到末尾。即使在启动完成之前收到,Worker 现在也会正确响应
inspect stats
命令(问题 #1659)。:signal:`task_postrun` 现在在
finally
块内发送,以确保始终发送信号。Beat:修复了字符串格式中的语法错误。
贡献者 :github_user:`nadad`。
修复了文档中的错别字。
Loic Bistuer 提供的修复,:github_user:`sunfinite`。
当使用
chain
类型而不是|
运算符构建时,嵌套链现在可以正常工作(问题 #1656)。
3.1.4
- 发布日期
- 2013-11-15 11:40 下午 世界标准时间
- 发布者
- 问庄严
现在取决于 Kombu 3.0.5。
现在取决于
billiard
3.3.0.7Worker 不小心将默认套接字超时设置为 5 秒。
Django:修复现在设置默认应用程序,以便线程将使用相同的应用程序实例(例如,对于 manage.py runserver)。
Worker:修复了一些用户在启动时遇到的 Unicode 错误崩溃。
在空链上调用
.apply_async
现在再次起作用(问题 #1650)。celery multi show
命令现在生成与 start 命令相同的参数。--app
参数最终可能会使用模块对象而不是应用程序实例(导致崩溃)。修复了beat init-script 中的语法错误问题。
由 Vsevolod 提供的修复程序。
测试现在通过 PyPy 2.1 和 2.2。
3.1.3
- 发布日期
- 2013-11-13 00:55 上午 世界标准时间
- 发布者
- 问庄严
修复了与 Python 2.7.0 - 2.7.5 的兼容性问题(问题 #1637)
unpack_from
在 Python 2.7.6 中开始支持memoryview
参数。工人:
-B
参数意外关闭了用于日志记录的文件。任务装饰任务现在保留其文档字符串(问题#1636)
3.1.2
- 发布日期
- 2013-11-12 08:00 下午 世界标准时间
- 发布者
- 问庄严
现在取决于
billiard
3.3.0.6不再需要安装台球 C 扩展。
工人默默地忽略了任务错误。
Django:修复了未指定数据库后端时引发的
ImproperlyConfigured
错误。修复由 :github_user:`j0hnsmith` 贡献。
Prefork 池:现在使用
_multiprocessing.read
和memoryview
(如果可用)。close_open_fds
现在使用os.closerange
(如果可用)。如果可能,
get_fdmax
现在从sysconfig
获取值。
3.1.1
- 发布日期
- 2013-11-11 06:30 下午 世界标准时间
- 发布者
- 问庄严
现在取决于
billiard
3.3.0.4。Python 3:修复了兼容性问题。
Windows:意外显示未安装台球 C 扩展的警告(问题 #1630)。
Django:使用设置默认
DJANGO_SETTINGS_MODULE
的解决方案更新教程,以便不必使用 celery 命令输入。还修复了教程中的拼写错误,并添加了使用 Django 数据库后端所需的设置。
感谢 Chris Ward,:github_user:`orarbel`。
Django:修复了在 Django 1.6 中使用 Django 设置时的问题。
Django:如果 django 加载器处于活动状态,则不应应用修复。
Worker:修复了使用兼容性 prefork 池实现时
human_write_stats
的属性错误。工人:修复了与台球的兼容性,没有 C 扩展。
Inspect.conf:现在支持
with_defaults
参数。Group.restore:不尊重后端参数。