如何解决gRPC 服务器 request_iterator 不会在循环中完成以防 C# 客户端 Python 服务器
我们正在尝试应用 gRPC 双向流式传输。原型:
message Request {
oneof requestTypes{
ConfigRequest configRequest = 1;
DataRequest dataRequest = 2;
}
}
message ConfigRequest {
request_quantity = 1;
...
}
message DataRequest {
string id = 1;
bytes data = 2;
...
}
service Service {
rpc FuncService(stream Request) returns (stream Response);
}
客户端用 C# 编写并包含异步。 如有必要,我可以澄清客户端代码。 服务器端在python中。 Python代码:
def FuncServe(self,request_iterator,context):
i = 0
for request in request_iterator:
...
if (i==request_quantity):
break
i+=1
问题是服务器在处理请求时循环挂起,所以我引入了一个 if-break 语句。到目前为止,一切正常,但我们希望在并非配置中规定的所有请求都已到达时计算出该选项。在这种情况下,我们无法避免在循环中挂起并捕获它。此外,我无法将循环移动到单独的线程中来控制执行时间,它由于迭代器为空而结束。 我将非常感谢在这个循环问题上的帮助。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。