重现步骤
- 启动服务器
- 向服务器发送客户端 RPC
- 重启服务器
- 使用同一个客户端,发送另一个 RPC。调用会失败
- 发送另一个 RPC,这个调用会成功
我还发现,如果服务器在重新启动之前长时间停止,第 5 步中的调用也会返回“通道处于状态 TRANSIENT_FAILURE”。
示例代码:https ://github.com/whs/grpc-repro (从 requirements.txt 安装,然后运行 main.py)
预期结果
所有调用都应该成功。
使用 Python grpcio==1.19.0 服务器/客户端和 go-grpc 服务器测试。我尝试设置 grpc.max_connection_age_grace_ms、grpc.max_connection_age_ms、grpc.max_connection_idle_ms、grpc.keepalive_time_ms、grpc.keepalive_permit_without_calls 但它们似乎没有帮助。