Модули google app engine - длительные задачи> 10 минут

Я пытаюсь портировать на модули google app Engine, ранее долгое время работавшее задание (запущенное в 'backends') .

Пример module1.yaml представлен ниже.

application: myuniqueapp
module:  module1
version: 1
runtime: python27
api_version: 1
threadsafe: true
instance_class: F4_1G
automatic_scaling:
  max_idle_instances: 1

handlers:
- url: /data
  static_dir: data
  application_readable: true

- url: /.*
  script: app.application

Код для отправки этому (из внешнего интерфейса) через taskqueue выглядит так:

taskqueue.add(url='/tasks/do_my_task',
            target='1.module1')

Это представляет правильное задание без проблем. Задача также выполняется модулем1.

Но он погибает на 10-й минуте, с DeadlineExceededError. Это длительное задание, которое выполняется более 10 минут (например, как оно работало для "бэкэндов").

Какое изменение конфигурации необходимо выполнить, чтобы задача, выполняемая в модуле, была> 10 минут?

1 ответ

Решение

Вам просто нужно выбрать ручное или базовое масштабирование для вашего модуля:

https://developers.google.com/appengine/docs/java/modules/

У вас есть несколько вариантов, но в настоящее время невозможно обойти 10-минутный крайний срок запроса для модулей автоматического масштабирования App Engine. Проще говоря, вам нужно ускорить выполнение задачи или запускать ее в службе, у которой нет крайнего срока.

Быстрее:

  • Разделите задачу на более мелкие процессы и поставьте в очередь несколько задач.
  • Выполните оптимизацию задачи и заставьте ее работать менее 10 минут.

Нет крайнего срока:

Google appengine также предоставляет классы backinstance, в которых задача может выполняться до 24 часов. Перенаправьте запрос задач на выполнение на backinstance, что решит 10-минутную проблему. Надеюсь, это решит вашу проблему.

Другие вопросы по тегам