Python gRPC отменяет вызов унарного потока со стороны клиента

Используя 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(), но, конечно, это закрывает все соединения, а не только этот поток.

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


person MarkNS    schedule 14.03.2019    source источник


Ответы (1)


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

person MarkNS    schedule 15.03.2019