поисковый робот на appengine

я хочу запустить программу continiously на appengine. Эта программа будет автоматически проверять некоторый веб-сайт continiously и хранить данные в его базу данных. Для программы действительно ли возможно continiously продолжать делать его на appengine? Или appengine уничтожит процесс?

Примечание: Веб-сайт, который будет проверен, не хранится на appengine

5
задан xyz 21 June 2010 в 19:34
поделиться

4 ответа

Вы не можете буквально запустить один непрерывный процесс более 30 секунд. Однако вы можете использовать очередь задач, чтобы один процесс вызывал другой в непрерывной цепочке. В качестве альтернативы вы можете запланировать выполнение заданий с помощью службы Cron.

0
ответ дан 18 December 2019 в 14:42
поделиться

Используйте задание cron для периодической проверки страниц, которые не очищались в течение последних n часов / дней / в любом другом месте, и помещайте задачи очистки для некоторого подмножества этих страниц в очередь задач. Таким образом, ваши процессы не будут убиты из-за того, что они занимают слишком много времени, и вы не забьете сервер, который вы очищаете, чрезмерными всплесками трафика.

Я сделал это, и это работает очень хорошо. Следите за тайм-аутом задачи; если что-то занимает слишком много времени, разделите их на несколько этапов и обязательно используйте memcached свободно.

0
ответ дан 18 December 2019 в 14:42
поделиться

я хочу постоянно запускать программу на appengine.

Не могу.

Самое близкое, что вы можете получить, - это выполняемые в фоновом режиме запланированные задачи , которые длятся не более 30 секунд :

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

8
ответ дан 18 December 2019 в 14:42
поделиться

Мой друг предложил следующее:

  • Создать очередь задач
  • Запустить очередь, передав некоторые данные.
  • Используйте обработчик исключений и обработайте исключение DeadlineExceededException.
  • Создайте в обработчике новую очередь с той же целью.

Вы можете выполнять свою работу бесконечно. Вам нужно только учитывать используемое время ЦП и хранилище.

2
ответ дан 18 December 2019 в 14:42
поделиться
Другие вопросы по тегам:

Похожие вопросы: