Выполнять 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-адресу.