я хочу запустить программу continiously на appengine. Эта программа будет автоматически проверять некоторый веб-сайт continiously и хранить данные в его базу данных. Для программы действительно ли возможно continiously продолжать делать его на appengine? Или appengine уничтожит процесс?
Примечание: Веб-сайт, который будет проверен, не хранится на appengine
Вы не можете буквально запустить один непрерывный процесс более 30 секунд. Однако вы можете использовать очередь задач, чтобы один процесс вызывал другой в непрерывной цепочке. В качестве альтернативы вы можете запланировать выполнение заданий с помощью службы Cron.
Используйте задание cron для периодической проверки страниц, которые не очищались в течение последних n часов / дней / в любом другом месте, и помещайте задачи очистки для некоторого подмножества этих страниц в очередь задач. Таким образом, ваши процессы не будут убиты из-за того, что они занимают слишком много времени, и вы не забьете сервер, который вы очищаете, чрезмерными всплесками трафика.
Я сделал это, и это работает очень хорошо. Следите за тайм-аутом задачи; если что-то занимает слишком много времени, разделите их на несколько этапов и обязательно используйте memcached свободно.
я хочу постоянно запускать программу на appengine.
Не могу.
Самое близкое, что вы можете получить, - это выполняемые в фоновом режиме запланированные задачи , которые длятся не более 30 секунд :
Примечательно, что это означает, что время жизни выполнения отдельной задачи составляет ограничено 30 секундами. Если ваша задача исполнение приближается к 30-секундному пределу, App Engine вызовет исключение который вы можете поймать, а затем быстро сохраните вашу работу или журнал процесса.
Мой друг предложил следующее:
Вы можете выполнять свою работу бесконечно. Вам нужно только учитывать используемое время ЦП и хранилище.