• Официальный сайт SDK
  • Сайт с примерами кода

Работа приложения

Приложение, использующее фреймворк webapp, состоит из трех частей:

  • один или несколько потомков класса RequestHandler (описанных в разделе Обработчики запросов)
  • объект WSGIApplication, который содержит схему URL, сопоставленную с потомками класса RequestHandler
  • основная функция приложения, которая запускает в работу объект WSGIApplication с помощью CGI адаптера

В классе WSGIApplication реализован интерфейс стандарта WSGI, который осуществляет взаимодействие между веб-фреймворком и сервером. Любой совместимый со стандартом WSGI фреймворк может работать с App Engine при помощи соответствующего адаптера. В фреймворк webapp включен такой адаптер: функция run_wsgi_app() принимает в качестве аргумента объект, указывающий на конфигурацию приложения, и запускает его. Вы также можете использовать CGI-адаптер, включенный в состав модуля wsgiref стандартной библиотеки языка Python.

Следующий пример сопоставляет четыре URL с четырьмя соответствующими классами-обработчиками (не приведены в примере), и затем выполняет приложение при помощи вызова функции run_wsgi_app():

CmZyb20gZ29vZ2xlLmFwcGVuZ2luZS5leHQgaW1wb3J0IHdlYmFwcApmcm9tIGdvb2dsZS5hcHBlbmdpbmUuZXh0LndlYmFwcC51dGlsIGltcG9ydCBydW5fd3NnaV9hcHAKYXBwbGljYXRpb24gPSB3ZWJhcHAuV1NHSUFwcGxpY2F0aW9uKFsoJy8nLCBNYWluUGFnZSksCignL25ld2VudHJ5JywgTmV3RW50cnkpLAooJy9lZGl0ZW50cnknLCBFZGl0RW50cnkpLAooJy9kZWxldGVlbnRyeScsIERlbGV0ZUVudHJ5KSwKXSwKZGVidWc9VHJ1ZSkKZGVmIG1haW4oKToKcnVuX3dzZ2lfYXBwKGFwcGxpY2F0aW9uKQo==

Конструктор класса WSGIApplication принимает в качестве своих параметров список кортежей с парами значений, которые сопоставляют адреса URL с обработчиками запросов.

Опциональный параметр debug=True переводит приложение в отладочный режим, при работе в котором фреймворк выдает подробный стэк ошибок в том случае, если в процессе обработки запроса выдается исключение. По умолчанию, фреймворк в таких случаях возвращает стандартную ошибку 500 протокола HTTP.

Схема URL

Строка с URL в схеме является регулярным выражением. Все используемые в выражениях специальные символы должны быть экранированы. Регулярные выражения могут задавать группировки частей строки в URL, которые затем будут переданы как параметры в обработчик запросов.

CmNsYXNzIEJyb3dzZUhhbmRsZXIod2ViYXBwLlJlcXVlc3RIYW5kbGVyKToKZGVmIGdldChzZWxmLCBjYXRlZ29yeSwgcHJvZHVjdF9pZCk6CiMg0J7RgtC+0LHRgNCw0LfQuNGC0Ywg0L/RgNC+0LTRg9C60YIg0YEg0YPQutCw0LfQsNC90L3Ri9C8INC40LTQtdC90YLQuNGE0LjQutCw0YLQvtGA0L7QvCDQuCDQutCw0YLQtdCz0L7RgNC40LXQuS4KIyDQktGB0LUg0LDQtNGA0LXRgdCwINCy0LjQtNCwIC9icm93c2UvKGNhdGVnb3J5KS8ocHJvZHVjdF9pZCkg0L3QsNC/0YDQsNCy0LvRj9GC0Ywg0LIg0L7QsdGA0LDQsdC+0YLRh9C40LogQnJvd3NlSGFuZGxlci4KYXBwbGljYXRpb24gPSB3ZWJhcHAuV1NHSUFwcGxpY2F0aW9uKFsocicvYnJvd3NlLyguKikvKC4qKScsIEJyb3dzZUhhbmRsZXIpCl0sCmRlYnVnPVRydWUpCmRlZiBtYWluKCk6CnJ1bl93c2dpX2FwcChhcHBsaWNhdGlvbikK=

Подсказка: Платформа App Engine выполняет сопоставление URL запросов и соответствующих скриптов-обработчиков на языке Python на основании данных конфигурационного файла app.yaml. Затем фреймворк webapp перенаправляет указанные URL в соответствующие им классы-обработчики на основании схемы, заданной в объекте WSGIApplication. То, как вы будете использовать оба этих сопоставления зависит только от вас: вы можете направить все динамические запросы в один скрипт на языке Python, который в дальнейшем будет их обрабатывать, или, например, можете разнести несколько WSGI приложений по разным скриптам и использовать соответствующие URL в файле app.yaml, чтобы связать запросы с конкретным приложением.