Celery默认会拒绝接受泡菜,我应该禁用吗?

时间:2014-04-06 02:22:34

标签: python django celery pickle

我刚设置了我的第一个Celery实例,我收到警告,禁用pickle作为安全问题的序列化程序。关闭它的后果是什么?什么是Celery需要系列产品?

  

如果你依赖pickle,那么你应该设置一个设置来禁用它   警告,并确保一切都会继续工作   升级到Celery 3.2 ::

     

CELERY_ACCEPT_CONTENT = ['pickle', 'json', 'msgpack', 'yaml']

1 个答案:

答案 0 :(得分:5)

来自http://celery.readthedocs.org/en/latest/faq.html#is-celery-dependent-on-pickle

  

默认的序列化格式很简单,因为它很方便(它支持将复杂的Python对象作为任务参数发送)。

无论您是否使用泡菜,您可能需要通过设置CELERY_ACCEPT_CONTENT配置变量来关闭此警告。

如果您不在任务中使用Python对象作为参数,则应考虑使用安全的例如json序列化格式。

pickle的另一个限制是没有任务结果 - 请参阅http://docs.celeryproject.org/en/latest/faq.html#isn-t-using-pickle-a-security-concern

  

对于任务消息,您可以将CELERY_TASK_SERIALIZER设置为“json”或“yaml”而不是pickle。目前没有替代任务结果的解决方案(但使用JSON编写自定义结果后端是一项简单的任务)