Как автоматически запустить серверную часть движка приложений, когда в очереди запросов есть задачи?


Похоже, что я могу создать push-очередь, которая будет запускать бэкенды для обработки задач,и что я могу ограничить число рабочих до 1. Однако есть ли способ сделать это с помощью очереди вытягивания?

Может ли App-Engine автоматически запускать именованный серверный сервер, когда у очереди вытягивания есть задачи, а затем позволить ему истекать, когда он простаивает и очередь пуста?

Похоже, мне просто нужно каким-то образом вызвать произвольный URL, чтобы "уведомить" его о том, что есть задачи для обработки, но я не могу найти их документация о том, как это можно сделать.

2 2

2 ответа:

Используйте задачу cron или очередь push, чтобы периодически запускать серверную часть. Серверная часть может перебирать задачи (если таковые имеются) в очереди вытягивания, а затем истекать.

Нет системы уведомлений для очередей вытягивания, только проверка через статистику очередей и пустые / непустые результаты аренды.

Прежде всего вам нужно решить тип масштабируемости, который вы хотите использовать для вашего модуля. Я думаю, что вам следует взглянуть на базовое масштабирование (https://developers.google.com/appengine/docs/java/modules/)

Далее, для обработки задач из очереди pull вы можете использовать Cron для проверки очередей каждые несколько минут. Важно будет запросить не базовый модуль масштабирования, а модуль frontend, так как cron будет запускать экземпляры. Проблема в том, что вам все равно придется заплатить хотя бы за один экземпляр frontend cause ваше задание cron не позволит ему завершить работу.

Таким образом, решение может быть следующим:

  1. запускайте cron каждые 1 или 5 минут и вызывайте frontend
  2. Проверьте очередь в интерфейсе и выдайте запрос URLFetch базовому модулю масштабирования, если в очереди pull есть задачи
  3. обработка задач в очереди с использованием базового модуля масштабирования

Если вы используете экземпляры F1 для frontend и b2 или greate для других модулей, это может сэкономить вам немного денег.