微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

gRPC 服务器 request_iterator 不会在循环中完成以防 C# 客户端 Python 服务器

如何解决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 举报,一经查实,本站将立刻删除。