0

作为问题的答案:how-do-i-handle-streaming-messages-with-python-grpc,@Nathaniel 提供了一种处理请求和响应的解决方案。

但是当我想统计每个响应的处理时间时,它看起来并不正确。例如,我在我的睡眠中睡了 200 毫秒stream_iter,但tr甚至不到 200。我的代码:

t0 = time.time()
for rsp in stub.Process(stream_iter()):
    tr = (time.time() - t0) * 1000
    print(tr)
    t0 = time.time()
...

所以我想知道如何计时?

4

1 回答 1

0

很难判断给定代码段有什么问题。我建议创建一个完整的复制案例作为https://github.com/grpc/grpc/issues的问题。

以下是一些可能性:

  1. 流量控制,客户端/服务器可能会缓冲它收到的消息,因此在某些情况下您可能会看到小突发。
  2. 迭代器中的错误,例如,我们想要 sleep in __next__,但可能不小心注入了 sleep in __iter__

一般来说,如果你调整规模和吞吐量,噪音应该会消失。你所拥有的测量每个响应的延迟是好的。

于 2021-06-23T18:18:15.777 回答