Как использовать Google Cloud get_operation?

Я пытаюсь использовать функцию OperationsClient get_operation(), чтобы я мог опросить долго выполняющуюся задачу и узнать ее статус.

https://google-cloud-python.readthedocs.io/en/stable/core/operations_client.html#google.api_core.operations_v1.OperationsClient.get_operation

Код выглядит довольно просто:

api = operations_v1.OperationsClient()
response = api.get_operation(name)

Однако для инициализации OperationClient требуется канал: OperationsClient(channel). Я не понимаю, что делает канал и как он создается.

Любая помощь приветствуется. Спасибо


person user339946    schedule 08.03.2019    source источник


Ответы (2)


Из документов, которые вы связали:

channel (grpc.Channel) - канал gRPC, связанный со службой, реализующей интерфейс google.longrunning.operations.

Итак, если это ваша собственная служба gRPC, вам нужно сделать что-то вроде:

import grpc
channel = grpc.insecure_channel('localhost:50051')
api = operations_v1.OperationsClient(channel)
response = api.get_operation(name)

В зависимости от того, какую давно работающую службу вы пытаетесь опросить, вам может потребоваться использовать ее канал.

person Dustin Ingram    schedule 08.03.2019
comment
Что, если это не моя собственная служба gRPC? В настоящее время я просто использую SpeechClient для запуска long_running_recognize в аудиофайле. У меня есть название операции, просто нужно придумать, как опрашивать статус. - person user339946; 09.03.2019

Вот код, который я в итоге использовал.

operation = self.stt_client.transport._operations_client.get_operation(operation_name)
response = operation_core.from_gapic(
            operation,
            self.stt_client.transport._operations_client,
            types.LongRunningRecognizeResponse,
            metadata_type=types.LongRunningRecognizeMetadata,
        )
person user339946    schedule 09.03.2019
comment
Что такое self.stt_client в этом примере? Это google.cloud.speech.SpeechClient ()? - person Steve Mayne; 20.08.2019