【问题标题】:Protobuf how to use Any type with homebrew proto messageProtobuf 如何将 Any 类型与自制 proto 消息一起使用
【发布时间】:2020-11-23 13:26:09
【问题描述】:

我目前正在构建一个 python gRPC 服务器,它将大量不同的 proto 消息序列化为 json 以将它们存储到 no-sql 数据库中。我想简化此服务器的扩展,以便我们可以添加新类型而无需重写 gRPC 服务器和重新部署。理想情况下,我们想定义一条新消息,将其放入 proto 文件中并仅更新客户端。服务器一开始应该期待任何类型,但知道在序列化/反序列化时要查找的 .proto 文件或文件夹。

我已经阅读了 Any 类型,并且正在探索这是否是我的方法。有一些关于它的文档,但很少有例子可以使用。我不太明白的一件事是如何存储/检索“Any”字段的类型。

  • 所有文档都使用 https 作为 Any 字段类型的协议(例如 type.googleapis.com/google.protobuf.Duration)。这也是默认设置。如果我使用本地文件系统会是什么样子?我如何将其存储在客户端的 proto 消息中?
  • 如何在服务器端检索类型?
  • 在哪里可以找到类似的示例?

【问题讨论】:

    标签: python grpc proto


    【解决方案1】:

    抱歉,这只是部分答案。

    我最近开始在项目中使用 Any 并且可以提供一些观点。我对您概述的内容有类似(尽管更简单)的要求。封装的消息内容,但在我的情况下,客户端需要向服务器发送一个描述符并确定一个特定的方法来帮助它(取消)编组等。

    我一直在使用 Google 的新 Golang APIv2,并且只从 Golang 和 Rust(不是 Python)熟悉它。缺少文档,但 Golang 文档有望有所帮助:

    我也很难理解全局注册表的概念(实现),因此我破解了上述解决方案。传入的消息元数据为服务器提供了足够的上下文,它可以构造消息类型并将字节编组到其中。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-11-06
      • 1970-01-01
      • 1970-01-01
      • 2021-12-30
      • 1970-01-01
      • 1970-01-01
      • 2023-03-19
      • 1970-01-01
      相关资源
      最近更新 更多