grpc升级后,grpc服务器流在客户端意外终止

时间:2019-04-18 16:43:47

标签: python grpc

我有一个简单的gRPC Python应用程序,用于监听和处理服务器流消息。基本上,它看起来像:

# creating the server RPC stream from stub
notification_stream = stub.GetNotification( filter )
try:
    for notification in notification_stream:
        #  do something with received notification
        print "Got {0}".format(notification) 
except Exception:
    print "Got exception"
    raise
print "terminated"

它与gRPC v1.7一起很好地工作。但是在v1.18下,使用新生成的客户端代码,notification_stream将在收到服务器的第一条消息后立即终止。检查服务器端(C ++中的gRPC v1.18),我们观察到它在调用grpc::ServerReaderWriter< W, R >::Read (R *msg)之后关闭了流。 返回false(表示流已完成,取消或失败)。结果,客户端没有收到任何异常(StatusCode.OK)并只是终止了。现在,我们必须在服务器处于v1.18时将客户端恢复到v1.7。

由于双方成功地交换了消息,我可能会感到困惑。在收到第一条消息后,是否可以通过某种方式获得更多有关客户端gRPC内部发生的信息?

0 个答案:

没有答案