Python Protobuf如何将任何类型与自制proto消息一起使用
我目前正在构建一个python gRPC服务器,它将大量不同的原始消息序列化为json,以将它们存储到一个无sql数据库中。我想简化此服务器的扩展,这样我们就可以添加新类型,而无需重写gRPC服务器和重新部署。理想情况下,我们希望定义一条新消息,将其放入一个proto文件中,并仅更新客户端。服务器一开始应该期望任何类型,但在序列化/反序列化时知道.proto文件或文件夹的查找位置 我读过关于任何类型的书,我正在探索这是否是我的方法。有一些关于它的文档,但是很少有例子可以使用。我不太明白的一件事是如何存储/检索“Any”字段的类型Python Protobuf如何将任何类型与自制proto消息一起使用,python,grpc,proto,Python,Grpc,Proto,我目前正在构建一个python gRPC服务器,它将大量不同的原始消息序列化为json,以将它们存储到一个无sql数据库中。我想简化此服务器的扩展,这样我们就可以添加新类型,而无需重写gRPC服务器和重新部署。理想情况下,我们希望定义一条新消息,将其放入一个proto文件中,并仅更新客户端。服务器一开始应该期望任何类型,但在序列化/反序列化时知道.proto文件或文件夹的查找位置 我读过关于任何类型的书,我正在探索这是否是我的方法。有一些关于它的文档,但是很少有例子可以使用。我不太明白的一件事是
- 所有文档都使用https作为任何字段类型的协议(例如type.googleapis.com/google.protobuf.Duration)。这也是默认设置。如果我使用本地文件系统会是什么样子?如何将其存储在客户端的proto消息中
- 如何在服务器端检索类型
- 我在哪里可以找到类似的例子
- 抱歉,这只是部分回答
我最近开始在项目中使用Any,可以提供一些视角。我有一个与您概述的内容类似(尽管更简单)的要求。封装的消息内容,但在我的例子中,客户机需要向服务器发送描述符,并确定一个特定的方法来帮助它(取消)封送等
我一直在使用谷歌新的Golang APIv2,只熟悉Golang和Rust(而不是Python)。缺少文档,但Golang文档有望帮助: