Как отловить исключение DeadlineExceeded Google Video Intelligence? - PullRequest
0 голосов
/ 30 апреля 2019

Я перебираю большой список видео и запускаю каждое из них через Google Video Intelligence. Это работает нормально для большинства видео, но если видео возвращает исключение, код (Python 3.x) должен пропустить его, не останавливая итерацию (добавил некоторый код, чтобы записать имя видео, из-за которого произошла ошибка, в файл CSV, чтобы проверьте позже).

Я использовал процедуру try / исключением, но даже если я не вызываю конкретное исключение, которое должно перехватить любое, оно прерывает итерацию.

Это код:

from google.cloud import videointelligence
from google.api_core.exceptions import *

(...)

operation = video_client.annotate_video(input_content=input_content, 
                                        features=features, 
                                        video_context=context,
                                        retry=None)
try:
    result = operation.result(timeout=600)
except:
    result = False
    pass

Это исключение поднято:

  File "/home/bernardo/.local/lib/python3.6/site-packages/google/api_core/grpc_helpers.py", line 57, in error_remapped_callable
    return callable_(*args, **kwargs)
  File "/home/bernardo/.local/lib/python3.6/site-packages/grpc/_channel.py", line 549, in __call__
    return _end_unary_response_blocking(state, call, False, None)
  File "/home/bernardo/.local/lib/python3.6/site-packages/grpc/_channel.py", line 466, in _end_unary_response_blocking
    raise _Rendezvous(state, None, None, deadline)
grpc._channel._Rendezvous: <_Rendezvous of RPC that terminated with:
    status = StatusCode.DEADLINE_EXCEEDED
    details = "Deadline Exceeded"
    debug_error_string = "{"created":"@1556638076.747183038","description":"Error received from peer","file":"src/core/lib/surface/call.cc","file_line":1039,"grpc_message":"Deadline Exceeded","grpc_status":4}"
>

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "annotate_videos.py", line 153, in <module>
    main()
  File "annotate_videos.py", line 149, in main
    process_videos(videos)
  File "annotate_videos.py", line 127, in process_videos
    result = annotate_videos_alternative(fallback_url)
  File "annotate_videos.py", line 59, in annotate_videos_alternative
    retry=None)
  File "/home/bernardo/.local/lib/python3.6/site-packages/google/cloud/videointelligence_v1/gapic/video_intelligence_service_client.py", line 282, in annotate_video
    request, retry=retry, timeout=timeout, metadata=metadata
  File "/home/bernardo/.local/lib/python3.6/site-packages/google/api_core/gapic_v1/method.py", line 143, in __call__
    return wrapped_func(*args, **kwargs)
  File "/home/bernardo/.local/lib/python3.6/site-packages/google/api_core/timeout.py", line 214, in func_with_timeout
    return func(*args, **kwargs)
  File "/home/bernardo/.local/lib/python3.6/site-packages/google/api_core/grpc_helpers.py", line 59, in error_remapped_callable
    six.raise_from(exceptions.from_grpc_error(exc), exc)
  File "<string>", line 3, in raise_from
google.api_core.exceptions.DeadlineExceeded: 504 Deadline Exceeded

1 Ответ

0 голосов
/ 01 мая 2019

Глядя на трассировку стека, кажется, что исключение исходит из строки

operation = video_client.annotate_video(input_content=input_content, 
                                        features=features, 
                                        video_context=context,
                                        retry=None)

Попробуйте переместить ваш оператор try на одну строку вверх.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...