【问题标题】:How do i timing streaming messages with Python gRPC我如何使用 Python gRPC 对流式消息进行计时
【发布时间】:2021-09-03 16:22:21
【问题描述】:

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

但是当我想统计每个响应的处理时间时,它看起来并不正确。比如我在我的stream_iter里睡了200ms,但是tr竟然还不到200。我的代码:

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

所以我想知道如何计时?

【问题讨论】:

    标签: python stream bidirectional grpc-python grpcio


    【解决方案1】:

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

    这里有一些可能性:

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

    通常,如果您调整规模和吞吐量,噪音应该会消失。您可以测量每个响应的延迟时间。

    【讨论】:

    • 是的,我扩大了吞吐量,我可以看到平均时间更可信,但我仍然不知道为什么会有噪音。正如你所提到的,我猜有缓冲或其他不可控因素。
    猜你喜欢
    • 2018-05-29
    • 2019-07-03
    • 1970-01-01
    • 2021-05-10
    • 1970-01-01
    • 2018-07-22
    • 2021-01-16
    • 2019-02-21
    • 2017-07-26
    相关资源
    最近更新 更多