Для взаимодействия с web сервером приложения, написанные под платформу Google App Engine, используют стандарт CGI. Когда сервер получает запрос от пользователя, он запускает приложение и передает ему данные запроса через переменные окружения либо через стандартный поток ввода (для запросов типа POST). Обрабатывая запрос, приложение выдает информацию в стандартный поток вывода, включая данные заголовков протокола HTTP и само содержание ответа.
Давайте напишем маленькое приложение, которое будет отображать короткое сообщение.
Создайте каталог helloworld для нашего проекта. Все файлы приложения мы будем размещать в этом каталоге.
Внутри каталога helloworld, создайте файл helloworld.py и поместите в него следующее содержимое:
print 'Content-Type: text/plain'
print ''
print 'Hello, world!'
Этот код на языке Python будет отвечать на запрос сервера, передавая заголовок HTTP, пустую строку и само содержание страницы с сообщением Hello, world!.
Приложения платформы App Engine содержат файл конфигурации с именем app.yaml. Храня в себе различные настройки, этот файл также содержит схему URL, которая используется для сопоставления с различными обработчиками.
Создайте файл app.yaml внутри каталога helloworld со следующим содержимым:
application: helloworld version: 1 runtime: python api_version: 1 handlers: - url: /.* script: helloworld.py
Давайте посмотрим на конфигурацию этого приложения сверху вниз:
helloworld. Когда вы регистрируетесь в App Engine, вы должны указать уникальный идентификатор для своего приложения и определить его в этом поле. На период разработки это значение может быть произвольным. Пока давайте оставим его значение - helloworld.1 кода приложения. Если вы измените это значение перед загрузкой обновленной версии на сервер Google, платформа App Engine сохранит предыдущую версию проекта и, в случае каких-либо неполадок, позволит вернуться к ней через административную консоль.python указывают, что для приложения используется среда выполнения Python версии "1". В будущем, после появления поддержки других языков и сред кроме Python, возможно будет указать другие значения./.* (это значит все URL) должен быть обработан скриптом helloworld.py.Для конфигурационного файла используется формат разметки YAML. Для уточнения всех опций конфигурации приложения смотрите описание app.yaml.
Наше приложение готово. Мы определили код обработчика запроса на любой URL. Теперь можно проверить работу приложения через web сервер, входящий в комплект App Engine SDK.
Запустите web сервер следующей командой, указав путь к каталогу с нашим приложением helloworld:
google_appengine/dev_appserver.py helloworld/
Web сервер запущен и принимает входящие запросы по порту 8080. Проверьте работу приложения, перейдя по ссылке:
Чтобы получить дополнительную информацию о возможностях запуска web сервера разработки, смотрите описание web сервера разработки либо запустите его с параметром --help.
Вы можете не прерывать работу web сервера и продолжать разработку приложения. В процессе изменения кода, сервер будет находить изменения в файлах и при необходимости их пересчитывать.
Попробуйте: не завершая web сервер, поменяйте в файле helloworld.py строчку Hello, world! на что-нибудь другое. Обновите страницу http://localhost:8080/ в своем браузере и увидите изменения.
Для завершения работы сервера в окне терминалов нажмите комбинацию клавиш Control-C (либо специальную клавишу "Break" на вашей клавиатуре).
На протяжении изучения этого руководства можно оставить web сервер запущенным в фоне. Если появится причина остановить его, повторно можно будет запустить его той же командой.
Мы закончили создание первого приложения! Теперь можно загрузить его на сервер Google и показать его всему миру. Однако, перед этим мы рассмотрим механизм использования web-фреймворка для дальнейшего эффективного добавления новых возможностей в наш проект.
Перейти к Использование web-фреймворка.