Поток сервера grpc неожиданно прервался в клиенте после обновления grpc - PullRequest
1 голос
/ 18 апреля 2019

У меня есть простое приложение Python gRPC, которое слушает и обрабатывает сообщения потока сервера.По сути, это выглядит так:

# 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 на стороне клиента после первого сообщения?

...