尝试在芹菜中强制JSON序列化程序时,ContentDisallowed关于pickle的错误

尝试在芹菜中强制JSON序列化程序时,ContentDisallowed关于pickle的错误,json,serialization,flask,celery,pickle,Json,Serialization,Flask,Celery,Pickle,在我的tasks.py中,我有以下内容来指定json应该用作芹菜的默认序列化程序 celery = Celery('app', broker = 'redis://localhost:6379/4') from kombu import serialization serialization.registry._decoders.pop("application/x-python-serialize") celery.conf.update( CELERY_TASK_SERIALIZE

在我的tasks.py中,我有以下内容来指定json应该用作芹菜的默认序列化程序

celery = Celery('app', broker = 'redis://localhost:6379/4')
from kombu import serialization
serialization.registry._decoders.pop("application/x-python-serialize")

celery.conf.update(
    CELERY_TASK_SERIALIZER = 'json',
    CELERY_RESULT_BACKEND  = 'redis://localhost:6379/4',
    CELERY_ACCEPT_CONTENT  = ['json'],
)
此外,在调用任务时,我将json序列化程序指定为:

r = t1.apply_async(kwargs = {'msg': msg}, serializer = 'json')
r = t1.wait()
但是我仍然在调用
t1.wait()
的行中遇到以下错误,回溯从该行开始

ContentDisallowed:拒绝反序列化pickle(application/x-python-serialize)类型的不受信任内容。

任务t1会引发不同类型的异常,但我会处理它们并尝试返回一个可解码的值

我用的是芹菜
3.1.17
(Cipater)和烧瓶
0.10.1

那么到底是什么导致了这个错误呢?如果需要更多信息,请告诉我


谢谢:)

要使用
json
,您需要指定

CELERY_ACCEPT_CONTENT = ['json']
CELERY_TASK_SERIALIZER = 'json'
CELERY_RESULT_SERIALIZER = 'json'
看来你失踪了

CELERY_RESULT_SERIALIZER = 'json'

谢谢它工作得很好!但是为什么在
apply\u async
调用中指定
serializer='json'
不能实现同样的效果呢?可能是该参数将用于序列化任务而不是结果?即使有了所有这些设置,我仍然会得到内容不允许的错误。