如何解决grpc Deadline Exceeded错误?

2024-02-28

我有用go和python客户端编写的grpc服务器,有时会出现如下错误:

eggs/grpcio-1.0.0-py2.7-linux-x86_64.egg/grpc/_channel.py\", line 432, in _end_unary_response_blocking\n    raise _Rendezvous(state, None, None, deadline)\nInternalServerError: Deadline Exceeded\n"}

grpc 截止日期概念 http://www.grpc.io/docs/guides/concepts.html#deadlines

gRPC 允许客户端在调用远程时指定截止时间值 方法。这指定了客户端想要等待多长时间 在 RPC 完成并出现错误之前来自服务器的响应 DEADLINE_EXCEEDED。在服务器端,服务器可以查询 截止日期以查看特定方法是否超时,或者超时了多少时间 剩下来完成该方法。

截止日期的指定方式因语言而异 - 对于 例如,Python 中始终需要截止时间值,但并非所有 语言有默认的截止日期。

有办法解决这个错误吗?


正如上面的评论中提到的,截止日期可以是客户端和服务器之间的任何东西,包括网络和服务器的实现。当您通过网络进行交谈时,偶尔会遇到截止日期,例如在包裹丢失期间。一般来说,您可以在此处执行以下操作:

  • 优化服务器实现以更快地处理您的请求。
  • 如果客户设定的截止日期很短,请增加截止日期。
  • Handle the deadline errors gracefully by:
    • 重试。只需确保使用指数退避,这样在服务器过载的情况下就不会使问题变得更糟。
    • 向上游报告错误。
    • 有时,也可能会回退到不使用 grpc 调用并降低体验。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何解决grpc Deadline Exceeded错误? 的相关文章

随机推荐