如何在python中动态地膨胀protobuf对象?

2024-06-16 13:58:07 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在访问一个提供1)protobuf模式和2)给定protobuf消息的二进制数据的web服务。protobuf模式以ZIP格式检索,并包含一个.proto文件,该文件的定义大致如下:

message FooMessage {
  //stuff
  ... 
}

//other .proto fun... 

获取.proto文件后,我编译它:

^{pr2}$

然后导入模块:

module = importlib.import_module(libName, package=pkg)

下一步是获取给定对象的二进制数据。我这样做并将其存储为data = io.BytesIO对象。在

所以现在我想用在.proto文件ala:

obj = module.FooMessage(data) 

问题:

  1. 如何从module中检索FooMessage类名 我已经导入以便动态构建对象?在
  2. 即使我“欺骗”并查看一个.proto文件的编译代码,我也看不到传递二进制数据以膨胀FooMessage_pb2.py对象的明显方法。似乎没有一个方法可以接受二进制数据来实例化对象ala:obj = module.FooMessage(data)

很明显我是在用错误的方式来思考这个问题。我将非常感谢你的帮助。在


Tags: 文件数据对象方法webobj消息data