如何解决grpc Deadline Exceeded错误?

时间:2017-03-23 10:19:35

标签: python go protocol-buffers rpc grpc

我有通过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 Deadlines concept

  

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

     

如何指定截止日期因语言而异 - for   例如,Python中始终需要截止日期值,而不是全部   语言有默认的截止日期。

有没有办法解决这个错误?

1 个答案:

答案 0 :(得分:0)

正如上面的评论所述,截止日期可以是客户端和服务器之间的任何内容,包括网络和服务器的实现。当您在网络上讨论时,应该偶尔预期截止日期,例如在包裹丢失期间。我一般来说,你可以在这里做几个选项:

  • 优化服务器实施以更快地处理您的请求。
  • 如果客户设置了较短的截止日期,请增加此时间。
  • 优雅地处理截止日期错误:
    • 重试。只需确保使用指数退避,这样就不会在服务器过载的情况下使问题变得更糟。
    • 报告错误上传。
    • 有时也可能会退回到不使用该grpc调用并降低体验。
相关问题