Python gRPC отменяет вызов унарного потока со стороны клиента - PullRequest
0 голосов
/ 14 марта 2019

Используя Python gRPC, я хотел бы иметь возможность отменить длительный вызов унарного потока со стороны клиента, когда установлен threading.Event.

def application(stub: StreamsStub, event: threading.Event):
    stream = stub.Application(ApplicationStreamRequest())
    try:
        for resp in stream:
            print(resp)
    except grpc.RpcError as e:
        print(e)

В настоящее время я отменяю поток, используя метод channel.close(), но, конечно, это закрывает все соединения, а не только этот поток.

Может кто-нибудь предложить, как я могу использовать событие, чтобы отменить потоковый итератор? Спасибо

1 Ответ

0 голосов
/ 15 марта 2019

Объект _Rendezvous, возвращаемый вызовом rpc, реализует grpc.RpcError, grpc.Future и grpc.Call, поэтому отменить поток так же просто, как вызвать stream.cancel (из интерфейса grpc.Future)

...