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 (将#修改为@)