在Python中读取gRPC重复字段

问题描述 投票:0回答:1

也许我确实错过了文档中的一些关键点,但我正在努力寻找一些easypythonic的方式来读取repeatedgRPC字段。

假设我们有一些原型:

message Bar
{
    repeated float vals = 1;
}
message Foo
{
    repeated Bar bars = 1;
}

service FooService
{
  rpc GetFoo(Foo) returns (Foo) {}
}

Foo
(服务端)中读取
Foo
Bar
GetFoo
值是什么?

目标是将封装的重复浮点数读取到单独的列表或 NumPy 数组中。

我尝试通过索引或迭代器式循环进行访问,例如:

...
def GetFoo(self, request, context):
    bar1 = request.bars[0]
    ...

不幸的是,这会引发消息对象

...has no len()
并简单地迭代点的异常:

...
def GetFoo(self, request, context):
    point_lists = list()
    for bar in request.bars:
         points = [v for v in bar]
         point_lists.append(points)
    ...

...引发异常

Bar object is not iterable
,这样我就无法循环遍历单点(尽管我不明白为什么它说
Bar
不可迭代,而
Foo
也是重复类型且 is 可迭代) ).

python parsing protocol-buffers grpc repeat
1个回答
0
投票

这样的东西适用于我类似的问题:

point_lists = [list(p) for p in request.bars]
© www.soinside.com 2019 - 2024. All rights reserved.