Go语言 如何解决grpc超过截止日期错误?

afdcj2ne  于 2022-12-07  发布在  Go
关注(0)|答案(1)|浏览(139)

我有grpc服务器,其中写的去和一个python客户端,有时,错误发生如下:

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截止日期概念:
gRPC允许客户端在调用远程方法时指定一个截止时间值。该值指定在RPC结束并返回错误DEADLINE_EXCEEDED之前,客户端希望等待服务器响应的时间。在服务器端,服务器可以查询截止时间,以查看特定方法是否超时,或者完成该方法还需要多长时间。
如何指定截止时间因语言而异--例如,在Python中总是需要一个截止时间值,而不是所有的语言都有默认的截止时间。
有什么方法可以解决这个错误吗?

jecbmhm3

jecbmhm31#

正如上面的评论中提到的,截止日期可以是客户端和服务器之间的任何事情,包括网络和服务器的实现。当你在网络上交谈时,偶尔应该预料到截止日期,例如在包丢失时。一般来说,有两个选项可以让你在这里做什么:

  • 优化服务器实现以更快地处理请求。
  • 如果客户端设置了较短的截止时间,请增加此值。
  • 通过以下方式妥善处理截止日期错误:
  • 重试。只要确保使用指数回退,这样在服务器过载的情况下就不会使问题变得更糟。
  • 向上游报告错误。
  • 有时候,也可以退而不使用grpc调用,从而降低体验。

相关问题