登录
首页 >  Golang >  Go问答

关闭gRPC套接字通知

来源:stackoverflow

时间:2024-03-15 19:03:21 438浏览 收藏

当 gRPC 服务器中的任务花费过长时间时,客户端可能会遇到“socket closed”错误,这是由于 gRPC 状态码 14(不可用)导致的。这种错误通常是暂时性的,可以通过重试机制来解决。为了纠正此问题,建议在客户端代码中实现重试逻辑,并在遇到不可用错误时自动重试请求。

问题内容

我用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
)

解决方案


grpc状态码14不可用主要是暂时性错误,可以通过重试机制纠正。

以上就是《关闭gRPC套接字通知》的详细内容,更多关于的资料请关注golang学习网公众号!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>