如何捕获或保存所有 gRPC Stream
How to capture or save all the gRPC Stream
我正在尝试编写一个 python 客户端来监听 gRPC 流(消防水带)。它不断地流式传输。没有"on completion".
原型:
rpc Start (StartParameters) returns (stream Progress) {}
在客户端中,我尝试编写以下内容,但由于 Start rpc 没有 return "on complete",我无法控制 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)
我正在尝试编写一个 python 客户端来监听 gRPC 流(消防水带)。它不断地流式传输。没有"on completion".
原型:
rpc Start (StartParameters) returns (stream Progress) {}
在客户端中,我尝试编写以下内容,但由于 Start rpc 没有 return "on complete",我无法控制 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)