【发布时间】:2017-10-12 05:35:09
【问题描述】:
我正在访问一个提供 1) protobuf 架构和 2) 给定 protobuf 消息的二进制数据的 Web 服务。 protobuf 架构以 ZIP 格式检索,并包含一个 .proto 文件,大致定义为:
message FooMessage {
//stuff
...
}
//other .proto fun...
获取 .proto 文件后,我会对其进行编译:
protoc --python_out=. path/to/message
然后我导入模块:
module = importlib.import_module(libName, package=pkg)
下一步是获取给定对象的二进制数据。我这样做并将其存储为data = io.BytesIO 对象。
所以现在我想用我在 .proto 文件中定义的获取的二进制数据来扩充 FooMessage 对象,ala:
obj = module.FooMessage(data)
问题:
- 如何从
module中检索FooMessage类名 我已导入以便动态构建对象? - 即使我“作弊”并查看单个 .proto 文件的编译代码,我也看不到传递二进制数据以膨胀
FooMessage_pb2.py对象的明显方法。似乎没有一种方法可以接收二进制数据来实例化对象 ala:obj = module.FooMessage(data)
显然,我正在以错误的方式做/思考这个问题。我将非常感谢您的帮助。
【问题讨论】:
-
不确定你在问什么。你有模式,你有符合这些模式的数据。有什么问题?
-
我获取了一个 .proto 文件,我将其编译成一个 _pb2.py 类。
-
忽略该评论。为了清楚起见,我编辑了问题。