python - 如何捕获或保存所有 gRPC 流
问题描述
我正在尝试编写一个 python 客户端来监听 gRPC 流(消防水带)。它不断地流式传输。没有“完成时”。
原型:
rpc Start (StartParameters) returns (stream Progress) {}
在客户端中,我尝试编写以下内容,但由于 Start rpc 未返回“完成”,因此我无法控制 for 循环进行打印(事件)。
rsp = self.stub.Start(params)
for event in rsp:
print(event)
有人可以帮我用python代码在超时(2分钟)后处理或捕获rsp中的所有事件,然后在rsp中打印每个事件。
解决方案
我得到了这个工作,如果其他人正在寻找答案,请发布这个以防万一
def collect_responses(self, response_iterator, response_queue):
for response in response_iterator:
response_queue.put(response)
def call_rpc(self)
response_stream = stub.Start(params)
response_queue = queue.Queue()
thread = threading.Thread(target=self.collect_responses,
args=(response_stream, response_queue))
thread.start()
time.sleep(120) # or have a different trigger to say, cancel stream
response_stream.cancel()
thread.join()
while not response_queue.empty():
item = response_queue.get()
print(item)
推荐阅读
- c++ - pybind11 与 CMakeLists 仅用于标头库?
- nearprotocol - 无法通过 Sputnik v2 上的自定义函数调用表单“stake_and_deposit”超过 24 N
- javascript - fabric.js 生成与我的画布大小相同的图像
- flutter - 如何在 Navigator.push 之后从父屏幕显示小部件而不重建
- python - pandas:从给定日期开始按月分组
- javascript - 如何为某些路由添加自定义类到 body 元素 - nexjts
- elasticsearch - 多个必须在 ElasticSeach 上查询时间范围
- node.js - 如何在 Discord.js 中添加多行会事物
- keycloak - 有没有办法通过多个用户名获取用户[Keycloak Admin Rest API]
- docker - dockerfile 中的参数化问题