【问题标题】:Is grpc server response streaming still blocking?grpc 服务器响应流仍然阻塞吗?
【发布时间】:2018-02-26 00:34:40
【问题描述】:

我正在使用一个 python gRPC 客户端并向一个服务发出请求 响应流。最后检查文档说 iterator.next() 是同步和阻塞。现在情况有变化吗?如果没有关于克服这个缺点的任何想法? 谢谢 阿文德

【问题讨论】:

  • 你得到了什么结果?你收到错误了吗? .next() 返回了什么?请检查您的控制台输出
  • 没有错误,只是 gRPC 文档显示了一个阻塞示例,并没有提到像 JavaScript 客户端那样的非阻塞示例。

标签: python grpc


【解决方案1】:

事情没有改变;截至 2018 年 3 月,响应迭代器仍处于阻塞状态。

我们目前正在确定今年晚些时候可能准备好的补救措施,但就目前而言,调用 next(response_iterator) 是获得 RPC 响应的唯一方法。

【讨论】:

  • 那么是否建议我们使用 threading 包生成一个线程来监听响应?这似乎对我有用,只是担心可能会有警告。
  • 是的,这是当前的建议。需要注意的是,它会花费您一个线程,在某些情况下,这超出了一些开发人员想要支付的费用。
【解决方案2】:

gRPC 现在对 Python 有实验性的异步支持,文档在这里:https://grpc.github.io/grpc/python/grpc_asyncio.html。您可以对响应使用异步迭代器,而不是使用 next(response_iterator) 进行阻塞读取。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-31
    • 1970-01-01
    • 2014-03-26
    相关资源
    最近更新 更多