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

Rya*_*rah 4 python django pickle celery

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

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

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

小智 5

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

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

无论您是否使用pickle,您都可以通过设置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编写自定义结果后端是一项简单的任务)

  • >泡菜的另一个限制是没有任务结果<这不是真的.引用是在安全上下文中. (4认同)