【问题标题】:Standard way for data serialization and deserialization for gRPC protocol in PythonPython中gRPC协议数据序列化和反序列化的标准方法
【发布时间】:2021-09-22 07:39:03
【问题描述】:

在 Python 中用于 gRPC 传输的序列化和反序列化数据是否有任何标准方法?类似于用于 gRPC 的 Django REST 框架?

我们将数据存储在 MongoDB 中,我们需要以某种有效的方式验证来自 gRPC 的输入。并且还可以整齐地序列化数据以进行相反方向的传输。

【问题讨论】:

    标签: python serialization deserialization grpc grpc-python


    【解决方案1】:

    在我们的项目中,我们使用的是一种幼稚的方法。只是一个可序列化为字典的简单数据类。此类中的字段与 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))
    

    但可能有更好的方法来处理它。

    【讨论】:

      猜你喜欢
      • 2014-05-14
      • 2017-05-15
      • 2010-10-15
      • 2020-04-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多