【发布时间】:2021-09-22 07:39:03
【问题描述】:
在 Python 中用于 gRPC 传输的序列化和反序列化数据是否有任何标准方法?类似于用于 gRPC 的 Django REST 框架?
我们将数据存储在 MongoDB 中,我们需要以某种有效的方式验证来自 gRPC 的输入。并且还可以整齐地序列化数据以进行相反方向的传输。
【问题讨论】:
标签: python serialization deserialization grpc grpc-python
在 Python 中用于 gRPC 传输的序列化和反序列化数据是否有任何标准方法?类似于用于 gRPC 的 Django REST 框架?
我们将数据存储在 MongoDB 中,我们需要以某种有效的方式验证来自 gRPC 的输入。并且还可以整齐地序列化数据以进行相反方向的传输。
【问题讨论】:
标签: python serialization deserialization grpc grpc-python
在我们的项目中,我们使用的是一种幼稚的方法。只是一个可序列化为字典的简单数据类。此类中的字段与 gRPC proto 文件中的消息实体名称匹配。
import dataclasses
@dataclasses.dataclass()
class gRPC_Mapping_Entity(object):
# These fields are matching to proto file:
some_field_a: str
some_field_b: str
# To make object serializable to dictionary
def keys(self) -> list[str]:
return [_var for _var in vars(self)
if not _var.startswith("_")]
def __getitem__(self, key):
return getattr(self, key)
# Somewhere on server side:
# ...
grpc_map = gRPC_Mapping_Entity(...)
# 'project_pb2' is automatically generated by gRPC
# 'Entity' is a message in the 'project' service
project_pb2.Entity(**dict(grpc_map))
但可能有更好的方法来处理它。
【讨论】: