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

Запросы и стандарт CGI

Когда App Engine получает запрос от пользователя, она вызывает соответствующий этому URL обработчик, основываясь на данных конфигурации приложения, размещенных в файле app.yaml. Для передачи содержимого и получении ответа на запрос от обработчика App Engine использует стандарт CGI.

Схема URL и скрипты-обработчики

Когда платформа получает внешний запрос для приложения, она перенаправляет его к серверу. Сервер проверяет соответствие схемы URL в файле app.yaml с полученным запросом и определяет, какой из скриптов-обработчиков на языке Python необходимо вызвать.

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

Стандарт CGI

После того, как запрос был перенаправлен к серверу и найден соответствующий ему обработчик, App Engine передает управление этому коду. Как описано в стандарте CGI, сервер передает данные запроса в переменных окружения или стандартном потоке ввода. Скрипт-обработчик производит некоторые действия, соответствующие полученному запросу, подготавливает ответ и передает его в стандартный поток вывода.

Вы можете обратиться к документации по стандарту CGI для получения дополнительной информации о формате переменных окружения и потоках обмена данными. Для удобства разработки большинство приложений не работают напрямую с этими данными, а используют специализированные библиотеки функций для обработки запросов и подготовки на них ответов. Одним из примеров является модуль cgi из стандартной библиотеки языка Python или web-фреймворк, который знает всю кухню протокола CGI (такой как webapp).

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

CnByaW50ICJDb250ZW50LVR5cGU6IHRleHQvcGxhaW4iCnByaW50ICIiCnByaW50ICJIZWxsbywgd29ybGQhIgo==

Поточное вещание не поддерживается

Платформа App Engine передает все данные, полученные от пользователя в обработчик запроса приложения через стандартный поток ввода и ждет выполнения кода. После завершения работы обработчика все данные, полученные через стандартный поток вывода, передаются пользователю. Таким образом, App Engine не поддерживает поточную отправку данных пользователю до окончания работы обработчика.