在本文中例子中遇到問題的各種開發版本如下:
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。
所以為了讓報錯消除,需要添加以上設置。
最好問題得到成功解決:運行如下結果