Google App Engine: задачи в очереди и задания Cron

Меня очень смущают концепции GAE о задачах, очередях задач (как push, так и pull), задания Cron и то, как каждый из них относится к экземплярам Frontend и Backend.

Я пытаюсь добиться ситуации, когда некоторые HTTP-запросы могут быть обслужены немедленно, а некоторые — в очереди. Запросы в очереди могут в конечном итоге привести к запуску моего собственного кода (после того, как они будут использованы) или они могут попасть в один из сервисных API GAE (LogQuery и т. д.).

Кажется, я не могу понять, как спроектировать эти два сценария, не говоря уже о том, чтобы написать код. Что еще хуже, я читал литературу, в которой говорится, что существует определенный код, связанный с задачами/очередями, который вы хотите делать по-разному, в зависимости от того, выполняется ли код на экземпляре Frontend или Backend. Заранее спасибо за любую помощь здесь! Бонусные баллы за конкретные примеры!


person IAmYourFaja    schedule 11.08.2012    source источник


Ответы (1)


Вы пишете код, Tasks и Cron его выполняют.

Task — это обертка для набора свойств, основное из которых — Url, которое должно выполняться. Ваш код (обработчик, сервлет) должен находиться на этом URL-адресе. Задачи находятся в очередях задач, которые имеют определенные свойства по умолчанию: насколько быстро, сколько параллельно и т. д. они выполняют задачи. Таким образом, в основном список дел, который последовательно выполняет задачи без гарантии, когда задача начнется.

Cron — это служба, которая периодически вызывает предоставленный вами URL. В некотором смысле это планировщик.

Ваш URL-адрес (= ваш обработчик/сервлет) может находиться на внешнем экземпляре (по умолчанию) или на внутреннем экземпляре (необходимо установить специальное свойство в Задаче или в настройках Cron). Основное отличие состоит в том, что фронт-запросы должны выполняться в течение 10 минут, тогда как бэкенд-запросы могут выполняться бесконечно долго.

person Peter Knego    schedule 11.08.2012