我有简单的双向rpc原型接口,例如:
rpc RouteData(stream RouteNote) returns (stream ProcessedRouteNote) {}
问题是,可能需要一段时间才能返回ProcessedRouteNote
。
我想知道什么是推荐的方法来存储连接的客户端,以便以后可以流回响应(即“ ProcessedRouteNote”)?
"def RouteData(self, request_iterator, servicer_context)"
似乎保存“ def RouteData”的“ request_iterator ”(即“ RpcMethodHandler ”),然后直接调用stream_stream即可完成此工作。
将感谢您的反馈。
我可以通过询问以下问题来进一步简化此问题: 如何将数据/响应发送到先前已向服务器发送请求(双向)的特定客户端?应该注意的是,其目的不是在服务器的RPC处理程序的上下文中发送响应。此外,可能有十几个请求,但只有一个响应。因此,我没有兴趣阻止RPC处理程序等待响应。我真的希望grpc能够做到这一点,否则对我们来说确实是一个大问题。
谢谢, 迈克
答案 0 :(得分:1)
您可以让生成器产生响应值并等待threading.Event
对象触发,该对象可能存储在哈希表中,具体取决于您的应用程序逻辑。