Celery3 迁移到 celery4 遇到的问题
2017-11-24 11:35
766 查看
今天将老项目中的
1.
我的任务函数的参数是一个自定义的对象实例,4.0版本默认是使用
解决:
将
2.
版本4对很多配置的名称进行了变更,所以更改配置名称就可以了
报错提示:
解决:
3.
这个问题不是celery 的问题,我项目里使用了redis作为消息中间件,这个问题是由于redis的版本问题导致的,我原来的版本是2.10.3,与celery4 不完全兼容。
解决:
4.
默认情况下celery4不会接受
解决:
将
celery3更新到
celery4。出现了一些问题,这里做一个记录,方便以后查看。如果有人也遇到同样的问题,可以作为参考,少走弯路。
更新
最简单的更新方式当然是pip, ;)pip install -U celery==4.1.0
遇到的问题
1. kombu.exceptions.EncodeError: Object of type 'Message' is not JSON serializable
我的任务函数的参数是一个自定义的对象实例,4.0版本默认是使用 JSON序列化的,而
JSON支持的类型有限,不包括自定义类实例。
解决:
将
task_serializer设置成
pickle
2. celery.exceptions.ImproperlyConfigured
版本4对很多配置的名称进行了变更,所以更改配置名称就可以了报错提示:
Cannot mix new and old setting keys, please rename the following settings to the new format: CELERY_RESULT_BACKEND -> result_backend
解决:
CELERY_RESULT_BACKEND配置名称修改为
result_backend
3. TypeError: can_read() got an unexpected keyword argument 'timeout'
这个问题不是celery 的问题,我项目里使用了redis作为消息中间件,这个问题是由于redis的版本问题导致的,我原来的版本是2.10.3,与celery4 不完全兼容。解决:
pip install -U redis==2.10.6
4. kombu.exceptions.ContentDisallowed: Refusing to deserialize untrusted content of type pickle (application/x-python-serialize)
默认情况下celery4不会接受pickle类型的消息,所以报这个错误
解决:
将
accept_content设置成 [‘pickle’] 就行了
相关文章推荐
- 迁移项目中mysq中遇到的问题
- 谈谈把网站迁移到阿里云的一些感想和其中遇到的一些问题
- 迁移eclipse项目至Android studio遇到的问题
- 关于vhd做为第二系统在迁移中遇到的奇怪问题
- Eclipse 迁移 Android Studio遇到问题及解决方案
- SVN仓库迁移到Git遇到的两个问题和解决办法
- Confluence迁移中遇到的问题(Data too long for column 'STRINGVAL')及解决方法
- 小心陷阱: 迁移应用到Cluster遇到的Timer问题
- openldap迁移遇到的问题
- 把应用层从WebSphere5迁移到WebSphere6.1时遇到的一个问题
- 分析ORA-12899, 迁移数据时遇到的多字节问题
- 配置了集群迁移后遇到的启动MS的问题
- svn_auth系统由windows迁移到linux下遇到的问题
- 总算告一段落:qt3到pt4平台迁移时遇到的一些问题
- EntityFramework 迁移遇到的问题
- 【个人整理】WAS7.0迁移时遇到的问题:TransformerFactoryImpl not found及解决
- 从VS2008+QT4到VS2015+QT5迁移过程中遇到的问题及解决方法
- Swift3迁移至Swift4可能遇到的问题小结
- MySQL(GNU/Linux)从5.5迁移到5.1遇到的问题,error 37
- 使用Navicat Premium将Oracle数据库中的表和数据迁移到MySQL数据库中,遇到的Date类型出现精度问题及解决方法