我的消息定义如下:
import "google/protobuf/any.proto";
service TSSwitch {
rpc start_ts_analytic (StartTSAnalyticRequest) returns (SwitchResponse) {}
}
message StartTSAnalyticRequest {
google.protobuf.Any config = 4;
}
我已经在客户端实现了以下内容:
from google.protobuf.any_pb2 import Any
config = {
"a": true,
"b": [[576, 667, 360, 998],
[1483, 940, 1348, 676]],
"c": [0,600, 1500, 600],
"helmet_violation": false
}
cfg = Any().Pack(config)
req = switch_pb2.StartTSAnalyticRequest(config=cfg)
但是执行后,我在客户端遇到了这样的错误:
'BaseDict' object has no attribute 'DESCRIPTOR'
我做错了什么?请帮我解决这个问题:(
答案 0 :(得分:1)
不幸的是,Any
proto并不意味着可以对任何Python对象进行编码的proto消息,而是能够将任何其他proto消息及其类型打包在一起的proto消息。
在您的用例中,如果您想通过字典,可以考虑: