Celery 2.4 的更改历史记录 — Python 文档

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

Celery 2.4 的更改历史记录

2.4.5

发布日期
2011-12-02 05:00 下午 格林威治标准时间
发布者
问庄严
  • 周期性任务间隔计划被意外舍入,导致一些周期性任务提前执行。

  • 节拍日志中人性化时间的记录现在更加详细。

  • 文档入门部分中的新 后端和代理 部分

    这取代了旧的“其他队列”教程,并添加了 MongoDB、Beanstalk 和 CouchDB 的文档。


2.4.4

发布日期
2011-11-25 04:00 下午 格林威治标准时间
发布者
问庄严

安全修复

  • [安全性:CELERYSA-0001] 当 --uid/--gid 参数为 celery multi, 时,守护进程将设置有效 ID 而不是真实 ID ]celeryd_detachcelery beatcelery events 被使用。

    这意味着权限没有被正确删除,以后有可能重新获得主管权限。


修复

  • 进程池:修复了关机时罕见的死锁(问题 #523)。

    修复由 Ionel Marys Christian 贡献。

  • Webhook 任务发出错误的 HTTP POST 标头(问题 #515)。

    Content-Type 标头已从 application/jsonapplication/x-www-form-urlencoded 更改,并添加了适当的 Content-Length 标头。

    修复由 Mitar 贡献。

  • Daemonization 教程:添加一起使用 Django 和 virtualenv 的配置示例(Issue #505)。

    胡安·伊格纳西奥·卡塔拉诺供稿。

  • 通用 init-scripts 现在会自动创建日志和 pid 文件目录(问题 #545)。

    克里斯·斯特里特供稿。


2.4.3

发布日期
2011-11-22 06:00 下午 格林威治标准时间
发布者
问庄严
  • 修复了 celeryctl 中的模块导入错误(问题 #538)。

    修复由 Chris Streeter 贡献。


2.4.2

发布日期
2011-11-14 12:00 下午 格林威治标准时间
发布者
问庄严
  • 程序模块不再使用相对导入,因此可以执行 python -m celery.bin.name


2.4.1

发布日期
2011-11-07 06:00 下午 格林威治标准时间
发布者
问庄严
  • celeryctl inspect 命令缺少输出。
  • 进程池:减少轮询间隔以减少空闲 CPU 使用率。
  • 进程池:MaybeEncodingError 未包含在 ExceptionInfo 中(问题 #524)。
  • worker:将消除任务使用者启动后发生的错误。
  • 日志记录:修复了无法写入标准输出重定向日志消息中的 unicode 的错误(问题 #522)。


2.4.0

发布日期
2011-11-04 04:00 下午 格林威治标准时间
发布者
问庄严

重要说明

  • 现在支持 Python 3。

  • 修复了工作进程处理中的死锁(问题 #496)。

    产生新的子进程后可能会发生死锁,因为在 fork 之后日志库的互斥锁没有正确重置。

    此错误影响的症状是工作人员只是停止处理任务,因为没有工作人员子进程正在运行。 maxtasksperchild 或启用时间限制时发生此错误的可能性更大。

    这是 http://bugs.python.org/issue6721#msg140215 的解决方法。

    请注意,虽然这修复了日志库锁,但仍有可能在父进程中初始化其他锁,由自定义代码引入。

    修复由 Harm Verhagen 贡献。

  • AMQP 结果后端:现在默认使结果过期。

    现在默认过期值取自 :setting:`CELERY_TASK_RESULT_EXPIRES` 设置。

    旧的 :setting:`CELERY_AMQP_TASK_RESULT_EXPIRES` 设置已被弃用,并将在 4.0 版中删除。

    请注意,这意味着结果后端需要 RabbitMQ 2.1.0 或更高版本,并且如果您使用旧版本运行,则必须禁用过期。 您可以通过禁用 :setting:`CELERY_TASK_RESULT_EXPIRES` 设置来实现:

    CELERY_TASK_RESULT_EXPIRES = None
  • Eventlet:修复了关机问题(问题 #457)。

  • 现在可以使用 URL 指定代理传输

    现在可以将代理指定为 URL。 此 URL 必须具有以下格式:

    transport://user:password@hostname:port/virtual_host

    例如,默认代理写为:

    amqp://guest:guest@localhost:5672//

    该方案是必需的,以便将主机标识为 URL 而不仅仅是主机名。 用户、密码、端口和 virtual_host 是可选的,默认为特定的传输默认值。

    笔记

    请注意,路径组件 (virtual_host) 始终以正斜杠开头。 这是区分虚拟主机 (空)和 '/' 所必需的,它们都是可接受的虚拟主机名。

    '/'的虚拟主机变成:

    amqp://guest:guest@localhost:5672//

    (空)的虚拟主机变为:

    amqp://guest:guest@localhost:5672/

    所以路径组件中的前导斜杠是 总是需要的

    此外,:setting:`BROKER_URL` 设置已添加为 BROKER_HOST 的别名。 URL 和配置中指定的任何代理设置都将被忽略,如果 URL 中未提供设置,则配置中的值将用作默认值。

    此外,程序现在支持 [X31X] 选项以在命令行上指定代理 URL:

    $ celery worker -b redis://localhost
    
    $ celery inspect -b amqp://guest:guest@localhost//e

    环境变量 CELERY_BROKER_URL 也可用于轻松覆盖使用的默认代理。

  • 已弃用的 celery.loaders.setup_loader() 函数已被删除。

  • :setting:`CELERY_TASK_ERROR_WHITELIST` 设置已被更灵活的方法取代(问题 #447)。

    错误邮件发送逻辑现在可以作为 Task.ErrorMail 使用,在 celery.utils.mail 中有实现(供参考)。

    可以对错误邮件类进行子分类,以完全控制发送错误消息的时间,从而无需单独的白名单设置。

    :setting:`CELERY_TASK_ERROR_WHITELIST` 设置已被弃用,并将在 4.0 版中完全删除。

  • 额外的弃用

    以下功能已被弃用,并计划在 4.0 版中删除:

    旧功能

    选择

    celery.loaders.current_loader

    celery.current_app.loader

    celery.loaders.load_settings

    celery.current_app.conf

    celery.execute.apply

    任务申请

    celery.execute.apply_async

    Task.apply_async

    celery.execute.delay_task

    celery.execute.send_task

    以下设置已被弃用,并计划在 4.0 版中删除:

    旧环境

    选择

    CELERYD_LOG_LEVEL

    celery worker --loglevel=

    CELERYD_LOG_FILE

    celery worker --logfile=

    CELERYBEAT_LOG_LEVEL

    celery beat --loglevel=

    CELERYBEAT_LOG_FILE

    celery beat --logfile=

    CELERYMON_LOG_LEVEL

    celerymon --loglevel=

    CELERYMON_LOG_FILE

    celerymon --logfile=



新闻

  • 不再依赖于 :pypi:`pyparsing`

  • 现在取决于 Kombu 1.4.3。

  • CELERY_IMPORTS 现在可以是标量值(问题 #485)。

    忘记在元组的唯一元素后添加逗号太容易了,这往往会影响新人。

    文档可能应该在示例中使用列表,因为为此使用元组甚至没有意义。 尽管如此,有很多使用元组的教程,这种变化应该对新用户有所帮助。

    推荐:github_user:`jsaxon-cars`

  • 修复了使用线程池时的内存泄漏(问题 #486)。

    由 Kornelijus Survila 提供。

  • statedb 没有在退出时保存。

    现在已修复此问题,当启用 --statedb 时,它应该再次记住以前撤销的任务。

  • 添加 :setting:`EMAIL_USE_TLS` 以启用安全 SMTP 连接(问题 #418)。

    由 Stefan Kjartansson 提供。

  • 现在处理任务消息中缺失的字段,如消息格式文档中所述。

    • 缺少必填字段抛出 @InvalidTaskError

    • 缺少 args/kwargs 被假定为空。

    克里斯·张伯林供稿。

  • 修复了 celery.events.state (celerymon/celeryev) 中的竞争条件,其中在迭代时会删除任务信息(问题 #501)。

  • Cache、Cassandra、MongoDB、Redis 和 Tyrant 后端现在遵循 :setting:`CELERY_RESULT_SERIALIZER` 设置(问题 #435)。

    这意味着目前只有数据库 (Django/SQLAlchemy) 后端不支持使用自定义序列化程序。

    史蒂夫·莫林供稿

  • 日志调用不再手动格式化消息,而是将其委托给日志系统,因此 Sentry 等工具可以更轻松地处理消息(问题 #445)。

    由克里斯·亚当斯提供。

  • multi 现在支持 stop_verify 命令等待进程关闭。

  • 如果缓存键是 unicode,则缓存后端不起作用(问题 #504)。

    由 Neil Chintomby 贡献的修复。

  • 新设置 :setting:`CELERY_RESULT_DB_SHORT_LIVED_SESSIONS` 添加,如果启用将禁用 SQLAlchemy 会话的缓存(问题 #449)。

    由利奥·狄拉克提供。

  • 所有结果后端现在都实现 __reduce__ 以便它们可以被腌制(问题 #441)。

    Remy Noel 贡献的修复

  • multi 在 Windows 上不起作用(问题 #472)。

  • 新式 CELERY_REDIS_* 设置现在优先于旧的 REDIS_* 配置键(问题 #508)。

    修复由约书亚金斯伯格贡献

  • 通用节拍初始化脚本不再设置 bash -e(问题 #510)。

    修复由 Roger Hu 提供。

  • 记录了和弦在 2.2 之前的 redis-server 版本中不能很好地工作。

    由丹·麦吉贡献。

  • :setting:`CELERYBEAT_MAX_LOOP_INTERVAL` 设置没有得到遵守。

  • inspect.registered_tasks 重命名为 inspect.registered 以保持命名一致性。

    以前的名称仍可用作别名。

    供稿人:Mher Movsisyan

  • Worker 在没有安全保护的情况下记录了 args 和 kwargs 的字符串表示(问题 #480)。

  • RHEL init-script:更改了工作程序启动优先级。

    MySQL 在 RHEL 上的默认启动/停止优先级是:

    # chkconfig: - 64 36

    因此,如果 Celery 使用数据库作为代理/消息存储,则应在数据库启动并运行后启动,否则会出现错误。 此提交将 init-script 中的优先级更改为:

    # chkconfig: - 85 15

    这是 3-rd 方应用程序的默认推荐设置,并确保 Celery 将在数据库服务之后启动并在其终止之前关闭。

    由尤里 V 提供。 扎伊采夫。

  • KeyValueStoreBackend.get_many 不尊重 timeout 参数(问题 #512)。

  • 在尝试配置之后,beat/events 的 --workdir 选项没有 chdir(2)(问题 #506)。

  • 在弃用 2.4 支持后,我们现在可以正确命名模块,因为我们可以使用绝对导入。

    因此,以下内部模块已重命名:

    celery.concurrency.evlet -> celery.concurrency.eventlet celery.concurrency.evg -> celery.concurrency.gevent

  • AUTHORS 文件现在按字母顺序排序。

    此外,您可能已经注意到,更改日志中现在提到了新功能/修复的贡献者。