Python 芹菜拒绝反序列化自定义序列化的内容,抛出ContentDisallowed异常

Python 芹菜拒绝反序列化自定义序列化的内容,抛出ContentDisallowed异常,python,serialization,openssl,celery,Python,Serialization,Openssl,Celery,我一直使用芹菜和rabbitmq作为后端队列来管理我的任务。 有些对象包含无法使用json序列化的datetime属性,因此我选择使用pickle作为序列化程序 与安全相关的问题it报告无法对不受信任的内容进行反序列化。 通过这个链接之后 我已经使用infopenssl生成了私钥和相关的自签名证书,并相应地配置了身份验证设置。 这次我看到的错误是ExpiredCerticate,我没有找到任何相关文档 所以我写了如下自定义Serializer,之后它抛出了与pickle所说的相同的错误 impo

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

与安全相关的问题it报告无法对不受信任的内容进行反序列化。 通过这个链接之后 我已经使用infopenssl生成了私钥和相关的自签名证书,并相应地配置了身份验证设置。 这次我看到的错误是ExpiredCerticate,我没有找到任何相关文档

所以我写了如下自定义Serializer,之后它抛出了与pickle所说的相同的错误

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:拒绝反序列化序列化程序(应用程序/x-serializer)类型的不受信任内容。

有人能指导我怎么做吗。感谢您的帮助


提前谢谢

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

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

谢谢你,巴拉斯。尽管这是一项工作,但它确实帮助了我。
from kombu.serialization import registry
registry.enable('pickle')