将pydantic.BaseModel与hiredis.Reader一起使用时出现类型错误

2024-06-16 14:25:38 发布

您现在位置:Python中文网/ 问答频道 /正文

我想创建一个pydantic.BaseModel类型的类,它有一个hiredis.Reader类型的对象。当我运行代码时,我得到一个类型错误。类型错误立即发生

TypeError: cannot pickle 'hiredis.Reader' object

from hiredis import Reader
from pydantic import BaseModel

class Foo(BaseModel):
    reader: Reader = Reader(encoding="utf-8", errors="strict")

hiredis py是一个Python扩展,它解析Redis协议。hiredis本身是用C编写的。也许这就是导致错误的原因

你们有谁犯过同样的错误,能帮我吗


Tags: 对象代码fromimport类型object错误pickle
1条回答
网友
1楼 · 发布于 2024-06-16 14:25:38

您可以通过将您的模型设置为允许任意类型来避免这种情况

https://pydantic-docs.helpmanual.io/usage/types/#arbitrary-types-allowed

from hiredis import Reader
from pydantic import BaseModel

class Foo(BaseModel):
    reader: Reader = Reader(encoding="utf-8", errors="strict")

    class Config:
        arbitrary_types_allowed = True

相关问题 更多 >