AppEngine - Какой тайм-аут для обработчиков облачных задач Node? - PullRequest
0 голосов
/ 16 ноября 2018

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

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

Согласно документам в Push Queues (что, по-видимому, эквивалентно современным облачным задачам?), Крайний срок составляет 10 минут для автоматического масштабирования и 24 часа для базового масштабирования.

Однако моя работа, похоже, падает через 2 минуты. 115 секунд - хорошо, 121 секунда - сбой. Рабочая нагрузка и потребление ресурсов одинаковы во всех случаях. Сообщение всегда бесполезно: «Процесс, обрабатывающий этот запрос, неожиданно прервался. Это может привести к использованию нового процесса для следующего запроса к вашему приложению. (Код ошибки 203)».

Неважно, если я использую экземпляр F2 с автоматическим масштабированием или B2 с базовым масштабированием. Прекращается через 2 минуты.

Согласно документам по обработке запросов узлов , для "обработчиков запросов" существует 60-секундный тайм-аут

Какой тайм-аут в конце? Это 1 минута, 2 минуты или 10 минут? Могу ли я что-нибудь сделать, чтобы изменить это, если я хочу, чтобы моя работа выполнялась в течение 5 или 30 минут.

1 Ответ

0 голосов
/ 03 января 2019

Короче говоря, я думаю, что лучшим выводом, который может помочь вашему сценарию, является Тайм-аут запроса узла , который по умолчанию равен 2 минутам


В Long, после прочтения вашего вопроса. Я решил создать из него PoC

  1. создал Dummy Node 8 Service, который использует только встроенный HTTP-сервер
  2. создал URL-путь, который может иметь искусственно длинный ответ (с использованием setTimeout) и может указывать длительность запроса (например, /lr/300 означает, что он ответит примерно через 5 минут)
  3. развернул его в службе GAE, отличной от default (Узел 8, Автоматическое масштабирование)
  4. созданная облачная задача «Задача», которая запрашивает /lr/540 к вышеупомянутой службе

До: До

Как видите, облачные задачи и App Engine имеют проблемы с ожиданием более 2 минут и имеют то же самое бесполезное сообщение, которое вы получили (процесс, обрабатывающий этот запрос, неожиданно прервался ...)

А потом: Код

Я написал эту строку для увеличения времени ожидания глобального запроса

И результат: Результат

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

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