Какой продукт Google Cloud использовать для выполнения очень длительного процесса Google Cloud VideoIntelligence Analysis - PullRequest
1 голос
/ 06 мая 2020

Я использовал функцию аннотации Google Cloud Video Intelligence с Google App Engine Flex. Когда я пытаюсь использовать VideoIntelligence с двухчасовым видео, функция AnnotateVideo отвечает за 60 минут.

gs_video_path ='gs://'+bucket_name+'/'+videodata.video.path+videodata.video.name
print(gs_video_path)

video_client = videointelligence.VideoIntelligenceServiceClient()
features = [videointelligence.enums.Feature.OBJECT_TRACKING]
operation = video_client.annotate_video(gs_video_path, features=features)

В настоящее время единственное место, где я могу выполнить это, - это Google App Engine Flex. Тем не менее, Google App Engine Flex постоянно держит экземпляр в режиме ожидания, что очень похоже на запуск виртуальной машины с точки зрения стоимости.

Google App Engine имеет тайм-аут 540 секунд, и такой же мудрый Google Cloud Run имеет таймаут 900 секунд, а Google Cloud Functions имеет максимальный таймаут 600 секунд, насколько я понимаю.

В этих обстоятельствах, какой продукт Google Cloud мне следует использовать для одночасового процесса, который должен выполняться, избегая при этом бездействующего экземпляра, когда нет использования.

(Пожалуйста, не отвечайте цитируя GKE или другие решения на основе виртуальных машин, решения для бездействующих экземпляров не принимаются)

Ответы [ 3 ]

2 голосов
/ 06 мая 2020

900-секундный тайм-аут Cloud Run может скоро измениться, чтобы удовлетворить ваши потребности (до часа). Есть функция в разработке. Я обновлю здесь, когда он станет доступен в бета-версии, следите за обновлениями.

#ahmetb-todo

1 голос
/ 09 мая 2020

Вы можете указать output_uri в исходном запросе. Это запишет окончательный результат в вашу корзину GCS. Тогда вам не нужно ждать, пока длительная операция завершит sh на вашей виртуальной машине. Первоначальный запрос займет всего несколько секунд, поэтому вы можете использовать функцию Google Cloud.

Когда операция завершается через час, вы обрабатываете выходные json файлы, настраивая триггер для своей выходной корзины GCS.

1 голос
/ 06 мая 2020

Я не думаю, что у Google есть служба, которая соответствует вашим потребностям.
Вероятно, вам следует реализовать какой-то собственный рабочий процесс, например:

  1. Из «короткоживущей» среды, такой как Function, CloudRun или AppEngine выполните следующие действия:
    1. Поместите событие для длительной задачи в PubSub
    2. Используйте Compute Engine API для запуска виртуальной машины
  2. Когда виртуальная машина запускается, его сценарий запуска должен получить последний элемент из PubSub и запустить вашу длительную задачу
  3. Когда задача выполнена, виртуальная машина завершает работу с помощью ComputeEngine API или вызывает функцию, которая вызывает завершение работы
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...