尝试在 Celery 中强制执行 JSON 序列化程序时关于 pickle 的 ContentDisallowed 错误
ContentDisallowed error about pickle when trying to enforce JSON serializer in Celery
我在 tasks.py 中指定了 json 作为默认值Celery 的序列化程序。
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: Refusing to deserialize untrusted content of type pickle (application/x-python-serialize)
任务 t1 引发了不同类型的异常,但我确实处理了它们并尝试 return 一个可破译的值。
我正在使用 Celery 3.1.17
(Cipater) 和 Flask 0.10.1
那么究竟是什么导致了这个错误?让我知道是否需要更多信息。
谢谢:)
要使用json
,您需要指定
CELERY_ACCEPT_CONTENT = ['json']
CELERY_TASK_SERIALIZER = 'json'
CELERY_RESULT_SERIALIZER = 'json'
看来你不见了
CELERY_RESULT_SERIALIZER = 'json'
我在 tasks.py 中指定了 json 作为默认值Celery 的序列化程序。
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: Refusing to deserialize untrusted content of type pickle (application/x-python-serialize)
任务 t1 引发了不同类型的异常,但我确实处理了它们并尝试 return 一个可破译的值。
我正在使用 Celery 3.1.17
(Cipater) 和 Flask 0.10.1
那么究竟是什么导致了这个错误?让我知道是否需要更多信息。
谢谢:)
要使用json
,您需要指定
CELERY_ACCEPT_CONTENT = ['json']
CELERY_TASK_SERIALIZER = 'json'
CELERY_RESULT_SERIALIZER = 'json'
看来你不见了
CELERY_RESULT_SERIALIZER = 'json'