【问题标题】:gRPC socket closed messagegRPC 套接字关闭消息
【发布时间】:2019-11-10 08:32:35
【问题描述】:

我用 Go 开发了一个 gRPC 服务器,用 Python 开发了一个客户端,当服务器中的服务器任务耗时太长时,客户端出现以下错误,服务器运行时没有任何错误。

 raise _Rendezvous(state, None, None, deadline)
grpc._channel._Rendezvous: <_Rendezvous of RPC that terminated with:
    status = StatusCode.UNAVAILABLE
    details = "Socket closed"
    debug_error_string = "{"created":"@1573373169.327520081","description":"Error received from peer","file":"src/core/lib/surface/call.cc","file_line":1039,"grpc_message":"Socket closed","grpc_status":14}"

像这样增加超时不起作用,在超时之前,大约 4 秒,我得到了错误。

res = stub.Fake(
    fake_pb2.FakeRequest(
        **fake_request
    ),
    timeout=9
)

【问题讨论】:

  • 您有权访问服务器的日志吗?是在观察客户端的请求吗?
  • @RichardBelleville 服务器没有错误

标签: python go grpc


【解决方案1】:

grpc状态码14不可用多为暂时性错误,可通过重试机制纠正。

【讨论】:

  • 对于特殊情况,当服务器任务花费太多时间时,每次我都会看到这个错误
  • 这里的重试是丢掉连接重新连接?我希望 python grpc 库能够做到这一点
  • @MartinKosicky 我相信确实如此。我在日志中看到了一些状态代码 14 UNAVAILABLE,这不会导致调用代码失败。 github.com/grpc/grpc/pull/11154
猜你喜欢
  • 1970-01-01
  • 2020-12-20
  • 2020-11-06
  • 2012-03-31
  • 1970-01-01
  • 2019-09-14
  • 1970-01-01
  • 1970-01-01
  • 2019-07-07
相关资源
最近更新 更多