Выполнять Backend используя Cron в Google App Engine (Java)

У меня есть Dynamic Backend setup на GAE, который я хочу запустить с помощью cron каждые 15 минут. Задача cron требует URL, который начинается с "/". Хотя бэкэнд-URL использует следующий формат: http://backendname.yourapp.appspot.com.

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

Согласно документации Google: http://code.google.com/appengine/docs/java/backends/overview.html#Public_and_Private_Backends

"Частные серверы могут быть доступны администраторами приложений, экземплярами приложения и API-интерфейсами и службами App Engine (такими как задачи очереди задач и задания Cron) без какой-либо специальной настройки".

Кто-нибудь получил бэкэнды, вызванные объявлением его в cron.xml?

Ответы

Ответ 1

Используйте целевой тег, чтобы указать бэкэнд в вашем cron.xml.

<?xml version="1.0" encoding="UTF-8"?>
<cronentries>
  <cron>
    <url>/long-task</url>
    <description></description>
    <schedule>every 30 minutes</schedule>
    <target>name-of-the-backend</target>
  </cron>
</cronentries>

Ответ 2

urlfetch может использоваться для доступа к внутренним URL-адресам, таким как частные бэкэнды - если это невозможно, не будет возможности общаться в вашем приложении! Лучшей идеей может быть использование очереди задач, которая может быть настроена для запуска задач с бэкэнд.

Ответ 3

Я не пробовал использовать движок google-приложений Backends, потому что его модель ценообразования. Однако, согласно документам:

http://code.google.com/appengine/docs/python/backends/overview.html#Public_and_Private_Backends

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

Я думаю, что GAE автоматически скроет backend-url из общего посещения http (даже без необходимости настройки app.yaml). Вы можете протестировать его поведение путем выхода из системы и напрямую обращаться к внутреннему URL-адресу.