python - 在双向调用上存储客户端连接

标签 python protocol-buffers grpc

我有简单的双向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/

相关文章:

c# - ProtoBuf-Net 错误消息 - "Nested or jagged lists and arrays are not supported"

c# - protobuf-net 使用字符串类型作为代理项

python - 接收流时中断python grpc客户端

rest - Grpc 相对于 Rest API 的优势

python - 引发异常时获取分配的变量,python 异常处理

python - 我可以像在 hgrc 文件中配置一些扩展一样配置 mercurial hooks 吗?

python - 使用 mod_python 时导入 python 模块

python - 从 pandas DataFrame 制作热图

json - CF 中关系数据库中的智能与否 : Persist serialized data (dotnet-protobuf, protobuf-net,json)

python - gRPC 客户端负载均衡