我有简单的双向rpc proto接口(interface),例如:
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 能够做到这一点,否则这对我们来说真的是一个大问题。
谢谢, 迈克
最佳答案
您可以让生成器生成响应值并等待 threading.Event
对象触发,该对象可能存储在哈希表中的某个位置,具体取决于您的应用程序逻辑。
关于python - 在双向调用上存储客户端连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52520524/