python - Python中gRPC协议数据序列化和反序列化的标准方法
问题描述
Python中gRPC传输的序列化和反序列化数据是否有任何标准方法?类似于用于 gRPC 的 Django REST 框架?
我们将数据存储在 MongoDB 中,我们需要以某种有效的方式验证来自 gRPC 的输入。并且还巧妙地序列化数据以进行相反方向的传输。
解决方案
在我们的项目中,我们使用的是一种幼稚的方法。只是一个可序列化为字典的简单数据类。此类中的字段与 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))
但是可能有更好的方法来处理它。
推荐阅读
- reactjs - MUI:必须指定 `image` 或 `src` 属性
- database-design - 使用 timescaledb 时,时间序列数据是否应该保存在自己单独的 Postgres 数据库中?
- python-3.x - 熊猫根据日期列获取所有行
- css - 线性渐变背景的CSS不透明度?
- mysql - 从 3 个表查询,永远持续
- ruby-on-rails - Rails 在递归函数中打开了多少个连接?
- itext - iTextSharp:使用 ColumnText 时“文档没有页面”
- java - 带有休眠的Spring数据jpa无法按顺序找到列
- javascript - SyntaxError: missing : after property id with Google Maps Javascript API
- animation - 鼠标悬停时为 SVG 设置动画