Django+Celery+redis kombu.exceptions.EncodeError:Object of type is not JSON serializable报错
Posted pycoder_hsz
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Django+Celery+redis kombu.exceptions.EncodeError:Object of type is not JSON serializable报错相关的知识,希望对你有一定的参考价值。
在本文中例子中遇到问题的各种开发版本如下:
Python3.6.8
Django==2.2
celery==4.4.0
kombu==4.6.7
redis==3.3.0
大概的报错如下截图:
是在开发使用celery+redis+django的场景中遇到的错误
kombu.exceptions.EncodeError:Object of type is not JSON serializable
解决方式:
在项目的setting中增加这样的配置,才可以
# celery==4 需要的配置参数
CELERY_TASK_SERIALIZER = \'pickle\'
CELERY_RESULT_SERIALIZER = \'pickle\'
CELERY_ACCEPT_CONTENT = [\'pickle\', \'json\']
报错原因:
celery4版本的 默认使用 JSON 作为 serializer ,而 celery3版本的默认使用 pickle。
所以为了让报错消除,需要添加以上设置。
最好问题得到成功解决:运行如下结果
以上是关于Django+Celery+redis kombu.exceptions.EncodeError:Object of type is not JSON serializable报错的主要内容,如果未能解决你的问题,请参考以下文章
Celery 3 版本 定时执行与 异步执行 | Django 案例
django 2.2, celery 4.3,出现 kombu.exceptions.EncodeError: cannot serialize '_io.BufferedReader'