Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
application = WSGIApplication([(route[0], lazy_loader(route[1])) for route in [
(r'/', 'handlers.MainPage'),
(r'/search/', 'handlers.Search'),
(r'/_ah/queue/sendmail', 'mail.SendMail'),
(r'/_ah/queue/HeavyTask', 'tasks.HeavyTask'),
]], debug=os.environ.get('CURRENT_VERSION_ID').lower().startswith('dev'))
def process_list(li):
result = []
for route in li:
result.append((route[0], lazy_loader(route[1])))
return result
ну так это не имеет никакого отношения к webapp, а исключительно к директивам import в main.py
если там импортировать только wsgi то никаких тормоов не будет.
под taskqueue вообще говоря можно и другой скрипт сделать, не main.
да и вообще, всё тяжёлое надо бы переносить на backend.
Скажите, чем вам нравится стандартный гугловский webapp? Ведь это же лоскутное одеяло — часть от Джанги, часть от WebOb. Нет удобного способа выставить куки (в т.ч. подписанные ключом), нет передачи сообщений между страницами. И вообще не хватает многих полезных штук, которые есть в других фреймворках из коробки.
self.response.headers.add_header('Set-Cookie', 'a=b; path=/; expires=sometime; HttpOnly')Плюс если вы уйдете от GAE, придется переписывать код. Я не предлагаю писать на Джанге (от нее там один огрызок), но flask, на мой взгляд, идеально подойдет.
Что касается ленивой загрузки приложения, то, на мой взгляд, описанный метод сложен и понятен вам одному. Я обычно разношу интерфейс и бекенд на разные скрипты. В скрипте интерфейса минимум импортов, поэтому сайт грузится быстро. Бекенд можно подогревать постоянными запросами по крону.
@app.route("/")
def hello():
return "Hello World!"
Ленивая загрузка webapp