Как сохранить приложение App Engine / Java с глухими запросами от веб-cron Java / Python? - PullRequest
3 голосов
/ 11 июля 2009
  1. App Engine позволяет за 30 секунд загрузить приложение
  2. Мое приложение занимает около 30 секунд - иногда больше, иногда меньше. Я не знаю, как это исправить.
  3. Если приложение бездействует (некоторое время не получает запрос), его необходимо перезагрузить.

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

Но есть загвоздка. , .

Если я пингую приложение, и оно уже выгружено App Engine, мой веб-запрос будет первым запросом к приложению, и приложение попытается перезагрузиться. Это может занять более 30 секунд и превысить ограничение времени загрузки.

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

Какие-либо предложения для хорошего способа сделать это в веб-cron Python или Java (я предполагаю, что решение Python будет проще)?

Ответы [ 4 ]

2 голосов
/ 11 июля 2009

Вероятно, было бы проще использовать cron, встроенный в App Engine , чтобы сохранить ваше приложение живым.

1 голос
/ 16 января 2011

В движке приложения также есть новая функция PAY, в которой вы можете использовать ее всегда. Стоит около 0,30 доллара США центов в день. Просто зайдите в настройки биллинга и включите его, если вы не против заплатить за эту функцию. Я полагаю, что это гарантирует вам, по крайней мере, 3 экземпляра, которые всегда работают.

(Я не осознавал, что нажатие на URL / ping, приводящее к ускорению экземпляра, приведет к превышению лимита 30 секунд!)

1 голос
/ 11 июля 2009

простейший http-пингер Java:

URLConnection hcon = new URL("http://www.google.com").openConnection();
hcon.connect();
hcon.getInputStream().read();
1 голос
/ 11 июля 2009

Я думаю, что вы просто хотите:

import httplib
hcon = httplib.HTTPConnection("foo.appspot.com")
hcon.request("GET", "/someURL")
hcon.close()
...