在双向呼叫上存储客户端连接

时间:2018-09-26 14:47:55

标签: python protocol-buffers grpc

我有简单的双向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能够做到这一点,否则对我们来说确实是一个大问题。

谢谢, 迈克

1 个答案:

答案 0 :(得分:1)

您可以让生成器产生响应值并等待threading.Event对象触发,该对象可能存储在哈希表中,具体取决于您的应用程序逻辑。