Celery版本升级记录

Django项目中使用了旧版本的celery,希望升级到最新版,在此记录最近今天的工作。

版本变更 3.1.23 -> 4.2.1
升级方案 参考官方文档

主要变化

  • Django最低支持版本1.8
  • 4.x是最后一个支持 python2 的大版本,5.0起不再支持
  • 任务消息协议升级,且不向后兼容。旧版本的消息投递之后,新版本的worker将不能处理
  • 配置名称建议使用小写,如 CELERY_DEFAULT_RATE_LIMIT 替换为 task_default_rate_limit。向后兼容,可以不修改
  • 不再需要 djcelery,这个在之前版本应该就是这样了

依赖项

  • djcelerycelery 4.x不再兼容,需要移除相关配置
  • raven INSTALLED_APPS 去掉 djcelery 后报错
Put 'djcelery' in your INSTALLED_APPS setting in order to use the sentry celery client.

目前看 raven 并没有直接引用 djcelery 包,可以按如下方式修改 INSTALLED_APPS并升级到新版6.9.0

Raven配置
  • redis 如果broker选择的 redis,需要将redis包升级到3.0.1,否则worker不能启动。

  • librabbitmq 和最新版的celery已经不兼容,不在使用。升级过程中出现worker不能启动的问题

    通过修改 broker_url 可以规避。pyamqplibrabbitmq在 API 上是兼容的,因此可以直接切换

切换步骤

  • 先将celery升级到3.1.25, 这一版提供了协议兼容,可以同时处理两种类型的协议
  • code change 新版celery引用的方式发生了变化,参见文档
  • celery升级到4.2.1,代码上线。如果有通过 apply_async 启动的定时任务,上线时不要重启worker,确保消息在旧版的worker都处理完之后再重启

你可能感兴趣的:(Celery版本升级记录)