Облачные задачи с автоматически масштабируемым движком приложений продолжительностью более 10 минут

У меня есть серверная часть для приложения iOS, которое я создал на App Engine, и я хочу выполнять потенциально длительные фоновые задачи для добавления записей в мою базу данных Cloud SQL. Возможно ли это без Compute Engine? Я видел, что Cloud Tasks могут выполнять асинхронную работу, и вы можете установить dispatchDeadline практически на все, что захотите, но я также читал в документации

Для задач App Engine значение 0 означает, что для запроса установлен крайний срок по умолчанию. Крайний срок по умолчанию зависит от типа масштабирования службы: 10 минут для стандартных приложений с автоматическим масштабированием, 24 часа для стандартных приложений с ручным и базовым масштабированием и 60 минут для гибких приложений. Если установлен крайний срок запроса, он должен находиться в интервале [15 секунд, 24 часа 15 секунд]. Независимо от dispatchDeadline задачи, обработчик приложения не будет работать дольше, чем тайм-аут службы. Мы рекомендуем установить для dispatchDeadline значение максимум на несколько секунд больше, чем тайм-аут обработчика приложения. Для получения дополнительной информации см. Тайм-ауты.

Мне не особенно нужен экземпляр App Engine, чтобы заботиться о том, завершится задача или нет ... поэтому я не уверен, почему рекомендация составляет максимум на несколько секунд больше, чем тайм-аут обработчика приложения. .. может кто-нибудь пролить свет на это? Что мне не хватает? Добавление Compute Engine для этих относительно простых задач, на выполнение которых уйдет не более нескольких часов, похоже на большие накладные расходы, и я не хочу, чтобы это определяло, какие параметры масштабирования я выберу.

Спасибо за ваше время.


person Magoo    schedule 16.12.2020    source источник


Ответы (1)


Рекомендация предназначена только для целей ведения журнала. Если время ожидания вашей задачи короче, чем время ожидания вашего приложения, вы никогда не узнаете, есть ли ошибка в вашем приложении, потому что у вас нет возврата.

Если у вас больше времени ожидания для облачной задачи, вы можете перехватить и отследить в журналах облачных задач код возврата приложения и, таким образом, корректно отслеживать ошибки.

App Engine с базовым режимом масштабирования отлично решение.

  1. У вас есть 9 часов бесплатного пользования в день (тип экземпляра B )
  2. App Engine автоматически масштабируется до 0 после периода бездействия (который можно определить в параметре basic scaling: idle_timeout)
  3. У вас есть региональная служба. Не зональный, как вычислительный механизм, или вам нужно иметь 9 вычислительных модулей, чтобы покрыть региональную высокую доступность (3 на зону, более 3 зон)
  4. У вас нет сервера для управления: без обновлений, без исправлений, без правил сети / IP / брандмауэра ...

Если вы спросите меня о накладных расходах, я буду использовать Compute Engine, а не App Engine (даже если вам нужно немного конфигурации).

person guillaume blaquiere    schedule 16.12.2020
comment
Спасибо, Гийом ... Итак, чтобы было ясно, если у меня есть облачная задача, у которой есть более длительный тайм-аут, чем 10 минут при автоматическом масштабировании App Engine, она все равно будет работать, но мне придется управлять ее успехом самостоятельно. журналы, потому что я ничего не получу от App Engine. Верный? - person Magoo; 16.12.2020
comment
Через 10 минут он бессерверный. Ваш экземпляр App Engine может продолжать работать, или платформа Google Cloud может удалить его, если на нем нет активности (нет нового запроса). - person guillaume blaquiere; 16.12.2020
comment
Но облачная задача по-прежнему будет работать? - person Magoo; 16.12.2020
comment
Пожалуйста, простите мое незнание, я новичок в GCP - person Magoo; 16.12.2020
comment
Нет проблем, всем нужно начинать день, а бессерверность - это новая парадигма. Вкратце: Cloud Task запускает запрос и ожидает до истечения времени ожидания (конечная точка App Engine является особенной для Cloud Task, устаревшей версии where Очередь задач, которая является частью службы App Engine). Не знаю, как он работает, где и на чем, он бессерверный. Но, в случае ошибки, вы можете настроить повтор для Cloud Task. - person guillaume blaquiere; 16.12.2020
comment
Бессерверный продукт, такой как Cloud Functions, Cloud Run и App Engine, вы платите за процессор, который используете при обработке запроса. Если запрос не обрабатывается, не следует выполнять обработку (вы понимаете, что фоновая обработка невозможна). ЦП и память имеют стоимость для GCP. Если запрос не обработан, GCP не выставляет вам счет и может удалить экземпляр, чтобы привязать процессор и память к активному экземпляру, который будет выставлен счет для получения денег. Вы чувствуете принцип? - person guillaume blaquiere; 16.12.2020
comment
Большое спасибо, Гийом :) Я постараюсь изо всех сил - person Magoo; 19.12.2020