gpt4 book ai didi

python - Celery 拒绝反序列化我的自定义序列化内容并抛出 ContentDisallowed Exception

转载 作者:太空狗 更新时间:2023-10-30 03:00:53 31 4
gpt4 key购买 nike

我一直在使用 celery 和 rabbitmq 作为我的后端队列来管理我的任务。有些对象包含无法使用 json 序列化的日期时间属性,因此我选择使用 pickle 作为序列化程序。

与安全相关的问题,它报告不受信任的内容无法反序列化。通过此链接后 http://celery.readthedocs.org/en/latest/userguide/security.html#guide-security我已经使用 openssl 生成了私钥和关联的自签名证书,并相应地配置了身份验证设置。这次我看到的错误是 ExpiredCerticate,我没有找到任何相关文档。

所以我编写了如下自定义序列化器,之后它抛出了与 pickle saying 相同类型的错误

import json
from datetime import datetime
from time import mktime

class DateTimeEncoder(json.JSONEncoder):
def default(self, obj):
if isinstance(obj, datetime):
return {
'__type__': '__datetime__',
'epoch': int(mktime(obj.timetuple()))
}
else:
return json.JSONEncoder.default(self, obj)

def datetime_decoder(obj):
if '__type__' in obj:
if obj['__type__'] == '__datetime__':
return datetime.fromtimestamp(obj['epoch'])
return obj

# Encoder function
def datetime_dumps(obj):
return json.dumps(obj, cls=DateTimeEncoder)

# Decoder function
def datetime_loads(obj):
return json.loads(obj, object_hook=datetime_decoder)

ContentDisallowed:拒绝反序列化序列化程序类型(application/x-serializer)的不受信任的内容

有人可以指导我如何进行吗?感谢您的帮助。

提前致谢!

最佳答案

上面的问题没有确切的解决方案,但您可以通过以下解决方法。默认情况下,在 kombu 序列化文件 (serialization.py) 中调用一个禁用所有可用序列化程序的函数(包括 pickle)

from kombu.serialization import registry
registry.enable('pickle')

它将启用 pickle 序列化程序,而不管内容是可信的还是不可信的。当然这是一个黑客。希望对你有帮助!

关于python - Celery 拒绝反序列化我的自定义序列化内容并抛出 ContentDisallowed Exception,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27579736/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com