我在Python中使用grpc,发现两个节点之间的通信不小心遇到了StatusCode.UNAVAILABLE。
我找到了一个解决方案,它说 UNAVAILABLE 是一个可重试的错误,我们应该重试:https ://github.com/grpc/grpc/issues/16515 。
所以我查阅了文档,发现了这个:https ://github.com/grpc/proposal/blob/master/A6-client-retries.md 。本文档显示了一个配置演示,如下所示。
"retryPolicy": {
"maxAttempts": 4,
"initialBackoff": "0.1s",
"maxBackoff": "1s",
"backoffMultiplier": 2,
"retryableStatusCodes": [
"UNAVAILABLE"
]
}
我尝试按照这个问题中的两个示例进行操作,但它仍然不起作用:Use retryPolicy with python GRPC client
这是我的代码,这里还有另一个问题。我不太明白“。”的意思。:
json_config = json.dumps(
{
"methodConfig": [
{
# "name": [{"service": "<package>.<service>"}],
"retryPolicy": {
"maxAttempts": 5,
"initialBackoff": "0.1s",
"maxBackoff": "10s",
"backoffMultiplier": 2,
"retryableStatusCodes": ["UNAVAILABLE"],
},
}
]
}
)
options = [
('grpc.service_config', json_config)
]
taf_grpc_client = GrpcRpcClient(RpcConfig(taf_server_host, self._taf_server_port, options=options),
taf_server_proto_pb2_grpc.TafServerStub)
self._taf_grpc_client_dict[taf_server_host] = taf_grpc_client
我想知道的是Python GRPC是否支持“重试”,它的正确用法是什么。