Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/303.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Protobuf如何将任何类型与自制proto消息一起使用_Python_Grpc_Proto - Fatal编程技术网

Python Protobuf如何将任何类型与自制proto消息一起使用

Python Protobuf如何将任何类型与自制proto消息一起使用,python,grpc,proto,Python,Grpc,Proto,我目前正在构建一个python gRPC服务器,它将大量不同的原始消息序列化为json,以将它们存储到一个无sql数据库中。我想简化此服务器的扩展,这样我们就可以添加新类型,而无需重写gRPC服务器和重新部署。理想情况下,我们希望定义一条新消息,将其放入一个proto文件中,并仅更新客户端。服务器一开始应该期望任何类型,但在序列化/反序列化时知道.proto文件或文件夹的查找位置 我读过关于任何类型的书,我正在探索这是否是我的方法。有一些关于它的文档,但是很少有例子可以使用。我不太明白的一件事是

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

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

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

    • 抱歉,这只是部分回答

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

      我一直在使用谷歌新的Golang APIv2,只熟悉Golang和Rust(而不是Python)。缺少文档,但Golang文档有望帮助:

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