Получить длительную операцию по имени для службы Google VideoIntelligence - PullRequest
0 голосов
/ 03 марта 2020

Как я могу получить объект операции, используя имя операции в python клиенте.

 video_client = videointelligence.VideoIntelligenceServiceClient()
    features = [videointelligence.enums.Feature.TEXT_DETECTION]
    operation = video_client.annotate_video(
        input_uri=input_uri,
        features=features
    )
   # operation.operation.name has the operation name

Теперь мне нужно использовать это имя, чтобы получить операцию и опросить ее статус

 service = discovery.build('cloudresourcemanager', 'v1')
 request = service.operations().get(name=operation.operation.name)

Но я получаю сообщение об ошибке: Traceback (последний вызов был последним): файл "", строка 1, в файле "env / local / lib / python2 .7 / site-packages / googleapiclient / discovery.py", строка 742, в методе (name, pvalue, regex)) TypeError: Параметр "name" value "projects / my-project / location / us-east1 / operations / 123" не соответствует шаблону "^ operations /.*$"

Итак, я попытался:

service = discovery.build('cloudresourcemanager', 'v1')
request = service.operations().get(name='operations/123')
response = request.execute()

Но это дает мне еще одну ошибку:

Трассировка (последний вызов был последним): Файл "", строка 1, в файле «env / local / lib / python2 .7 / site-packages / googleapiclient / _helpers.py», строка 130, в файле positional_wrapper возвращает упакованный (* args, ** kwargs) файл «env / local / lib / python2 .7 / site-packages / googleapiclient / http.py ", строка 842, при выполнении execute HttpError (соответственно, content, uri = self.uri) HttpError: https://cloudresourcemanager.googleapis.com/v1/operations/123?alt=json возвращено" поле [имя] имеет проблему [недействительно имя операции] ">

Как правильно получить объект операции по имени в python клиенте? Спасибо.

1 Ответ

0 голосов
/ 03 марта 2020

Мне удалось получить операцию по имени следующим образом:

from google.api_core import operations_v1
api = operations_v1.OperationsClient(video_client.transport.channel)
operation = api.get_operation(operation_name)
...