gRPC流维护

问题描述

说我正在使用双向流,并且服务器可能已关闭或网络可能已关闭。如何在代码中维护gRPC流?换句话说,stream中的stream,_ := myPbClient.Foo(context.Background())是否可以被破坏?如果是这样,我需要怎么修理?刚获得一个新的?


编辑

我找到了grpc.CallOption grpc.WaitForReady(true)。根据其readme的描述:

如果发出了RPC,但通道处于TRANSIENT_FAILURE或SHUTDOWN状态,则无法迅速传输RPC。认情况下,gRPC实现应立即使此类RPC失败。这被称为“快速失败”,但是该术语的使用是历史性的。由于通道处于其他状态(CONNECTING,READY或IDLE),RPC不应失败。

gRPC实现可以提供每个RPC选项,以使通道处于TRANSIENT_FAILURE状态不会使RPC失败。取而代之的是,实现将RPC排队,直到通道为READY。这就是所谓的“等待就绪”。如果有不相关的原因(例如,通道为SHUTDOWN或到达RPC的截止日期),则RPC仍应在READY之前失败。

因此,听起来好像如果我设置了grpc.WaitForReady(true),除非它处于SHUTDOWN状态,否则流不会失败?如果是这样,grpc何时会处于SHUTDOWN状态?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)