поток сервера grpc неожиданно завершился на клиенте после обновления grpc

#python #grpc

#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 он завершится вскоре после получения первого сообщения от сервера. Проверяя серверную часть (gRPC v1.18 на C ), мы заметили, что он закрыл поток после вызова grpc::ServerReaderWriter< W, R >::Read (R *msg)
возвращено false (что означает, что поток был либо выполнен, отменен, либо сбой). В результате клиент не получил исключения (StatusCode.OK) и просто завершен. На данный момент мы должны вернуть клиента к версии v1.7, пока сервер находится на версии v1.18.

Я в недоумении, в чем может быть проблема, учитывая, что обмен сообщениями был успешно произведен с обеих сторон. Есть ли способ получить дополнительную информацию о том, что произошло внутри gRPC на стороне клиента после первого сообщения?