我有一个用go编写的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 允许客户端在调用远程时指定截止时间值 方法。这指定了客户端想要等待多长时间 在 RPC 完成并出现错误之前来自服务器的响应 DEADLINE_EXCEEDED。在服务器端,服务器可以查询 截止日期以查看特定方法是否超时,或者超时了多少时间 剩下来完成该方法。
如何指定截止日期因语言而异 - 对于 例如,Python 中始终需要截止时间值,但并非所有 语言有默认的截止日期。
有办法解决这个错误吗?
正如上面评论中提到的,截止日期可以是客户端和服务器之间的任何东西,包括网络和服务器的实现。当您通过网络进行交谈时,偶尔会遇到截止日期,例如在包裹丢失期间。一般来说,您可以在这里执行以下操作:
参考- Spring Boot + gRPC 截止日期示例
根据 gRPC 文档,gRPC 客户端没有默认超时。所以 gRPC 客户端将无限期地等待。
因此,如果您收到超过截止日期的异常,则意味着在客户端已经使用 gRPC 截止时间配置了超时。
因此,如果您不想收到此异常,有 2 种解决方案 -