Выполнение бэкэндов с помощью Cron в Google App Engine (Java) - PullRequest
14 голосов
/ 11 июля 2011

У меня есть настройка динамического бэкенда в 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?

Ответы [ 3 ]

23 голосов
/ 27 сентября 2011

Используйте целевой тег, чтобы указать бэкэнд в вашем 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 голосов
/ 12 июля 2011

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

0 голосов
/ 12 июля 2011

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

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

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

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

...