Я только что провел локальный эксперимент (в настоящее время у меня нет быстро развертываемого игрового приложения), и, похоже, ваша довольно интересная идея может сработать.
Я заменил шаблон .*
, ранее ловив всех отставшихи направив их в мой скрипт службы по умолчанию (я использую среду выполнения Python) с определенными шаблонами, затем добавил этот обработчик после всех остальных:
- url: /(.*)$
static_files: images/\1
upload: images/.*
Мой каталог images
является реальным, содержит статические изображения (но для которого у меня уже есть другой обработчик с более конкретным шаблоном).
С этим на месте я сделал запрос к /crap
и получил, как и ожидалось (нет файла images/crap
):
ИНФОРМАЦИЯ 2019-11-08 03: 06: 02,463 module.py:861] default: «GET / crap HTTP / 1.1» 404 -
Я добавил запись вызовов ввызовы get()
и dispatch()
моего обработчика сценариев для подтверждения того, что они на самом деле не вызываются (регистрация запросов сервера разработки вызывает некоторые сомнения).
Я также проверил в уже развернутом приложении GAE, которое запрашиваетяmage, который соответствует шаблону статического обработчика, но который на самом деле не существует, получает ответ 404
, не вызывая запуск экземпляра службы (в данный момент ни один экземпляр не был запущен), т.е. он поступает непосредственно из CDN статического содержимого GAE.
Так что я думаю, что стоит попробовать с средой выполнения go, это может сэкономить значительное время для приложения без особой активности, связанной со случайным трафиком бота.
Что касается перезапуска экземпляраЯ подозреваю, что то, что вы видите, является лишь симптомом вашего экземпляра min-idle, установленного в 1. В отличие от динамического экземпляра, экземпляр idle (aka resident) обычно не предназначен для обработки трафика, он просто готов сделать это, если / когда это необходимо. Только когда динамический экземпляр не запущен (и способен эффективно обрабатывать входящий трафик) и в него поступает новый запрос, этот запрос немедленно направляется в незанятый экземпляр. В этот момент:
- неактивный экземпляр становится динамическим и будет продолжать обслуживать трафик до тех пор, пока он не отключится из-за неактивности или не умрет
- новый неактивный экземпляр запускается для удовлетворения минимума-idle конфигурации, он будет оставаться в режиме ожидания до тех пор, пока не произойдет другое подобное событие
Примечание: ваша идея поможет с частью часов экземпляра, используемой динамическими экземплярами, но не с частью экземпляра простоя.