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

Сервер разработки

Пакет SDK платформы App Engine включает в себя сервер разработки для проведения локальной отладки и тестирования приложений. Этот сервер воспроизводит среду выполнения языка Python платформы App Engine, включающую соответствующие ограничения и эмуляцию таких сервисов, как хранилище.

SDK и сервер работают на любом компьютере с поддержкой языка Python версии 2.5. Вы можете скачать пакет установки языка Python для своей операционной системы с сайта языка Python.

Если вы еще не успели, скачайте SDK платформы App Engine.

Запуск сервера разработки

После того, как вы создали каталог для приложения и поместили в него конфигурационный файл app.yaml, вы можете запустить сервер разработки dev_appserver.py командой:

CmRldl9hcHBzZXJ2ZXIucHkgbXlhcHAK=

По умолчанию веб сервер будет ожидать подключений по порту 8080. Таким образом вы можете перейти к своему приложению по URL: http://localhost:8080/

Для изменения порта, на котором запускается сервер, используйте параметр --port:

CmRldl9hcHBzZXJ2ZXIucHkgLS1wb3J0PTk5OTkgbXlhcHAK=

Для остановки сервера: в операционной системе Windows нажмите комбинацию клавиш Control-Break в окне запущенного сервера. Для операционных систем Mac OS X или Unix, нажмите Control-C.

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

Использование хранилища

Сервер разработки эмулирует работу хранилища платформы App Engine с использованием локального файла на компьютере разработчика. Файл сохраняется по завершении работы сервера, таким образом все помещенные в локальное хранилище данные будут доступны для последующей работы.

Для принудительной очистки локального хранилища используйте параметр --clear_datastore при запуске сервера:

CmRldl9hcHBzZXJ2ZXIucHkgLS1jbGVhcl9kYXRhc3RvcmUgbXlhcHAK=

При загрузке сервер выводит в окно терминала путь к файлу с содержимым локального хранилища. Вы можете сделать его копию и при необходимости восстановить данные по состоянию на любой момент времени. Не забудьте перезапустить сервер после проведения таких изменений.

Для указания другого размещения файла с локальным хранилищем используйте параметр --datastore_path:

CmRldl9hcHBzZXJ2ZXIucHkgLS1kYXRhc3RvcmVfcGF0aD0vdG1wL215YXBwX2RhdGFzdG9yZSBteWFwcAo==

При выполнении приложением запроса к хранилищу, среда разработки проверяет что его индекс содержится в файле index.yaml. Если требуемый индекс не существует, сервер сгенерирует его соответствующее определение и добавит в этот файл. Вы можете изменить содержимое файла с конфигурацией индексов и добавить в него определения индексов, совпадающих с запросами, не задействованными в ваших тестах.

Файл index.yaml дополняется данными для каждого запроса, который выполняется после того, как файл хранилища был создан или очищен. История запросов хранится в отдельном файле. Для изменения размещения этого файла используйте параметр --history_path, похожий на параметр --datastore_path.

Для дополнительной информации о индексах и файле index.yaml, смотрите разделы Запросы и индексы и Определение индексов.

Использование авторизации

Сервер разработки эмулирует аккаунты Google и перенаправляет пользователя на собственные страницы входа и выхода. При работе под управлением сервера разработки функции users.create_login_url и users.create_logout_url будут возвращать URL /_ah/login и /_ah/logout, указывающие на локальный сервер.

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

Для указания приложению, что пользователь имеет права администратора, установите соответствующую галочку в форме входа.

Использование электронной почты

Сервер разработки может быть использован для работы с сервисом электронной почты App Engine. Для того, чтобы включить поддержку отправки почты, необходимо задать опции с указанием используемого почтового сервера. Среда разработки может использовать как SMTP сервер так и локальную программу Sendmail.

Для активации поддержки почты через SMTP сервер используйте параметры --smtp_host, --smtp_port, --smtp_user и --smtp_password с соответствующими значениями.

CmRldl9hcHBzZXJ2ZXIucHkgLS1zbXRwX2hvc3Q9c210cC5leGFtcGxlLmNvbSAtLXNtdHBfcG9ydD0yNSBcCi0tc210cF91c2VyPWFqb2huc29uIC0tc210cF9wYXNzd29yZD1rMXR0M25zIG15YXBwCg===

Для указания отправки почты через программу Sendmail используйте параметр --enable_sendmail. Сервер разработки будет использовать программу sendmail в стандартной конфигурации для отправки сообщений.

CmRldl9hcHBzZXJ2ZXIucHkgLS1lbmFibGVfc2VuZG1haWwgbXlhcHAK=

Если в параметрах командной строки не задана отправка почты ни через SMTP, ни через Sendmail, приложение при выполнении этой операции получит успешный результат, но на самом деле отправка произведена не будет.

Использование URL Fetch

Когда ваше приложение использует интерфейс URL fetch API для выполнения исходящего HTTP запроса, сервер разработки производит их напрямую с локального компьютера. Такое поведение может отличаться, в том случае, если вы используете прокси-сервер для выхода в сеть Интернет.

Примечание: Программа dev_appserver.py может выполнять только один запрос в один момент времени. Если приложение использует обращение к самому себе, то при использовании сервера разработки такие запросы не могут быть выполнены. (Хотя при работе на сервере App Engine все будет нормально.) Для проведения тестирования в такой ситуации, запустите второй экземпляр dev_appserver.py на другом порту и укажите вашему приложению использовать этот сервер для выполнения запросов к нему.

Отладочная консоль

Сервер разработки включает в себя специальную консоль для работы с веб-приложением. С помощью нее вы можете просматривать данные локального хранилища и интерактивно выполнять код в окружении приложения.

Для доступа к консоли перейдите по ссылке /_ah/admin в ваш сервер: http://localhost:8080/_ah/admin

Параметры командной строки

Программа dev_appserver.py поддерживает использование следующих параметров командной строки:

--datastore_path=...

Путь к файлу, используемому для данных локального хранилища. Сервер автоматически создаст его при отсутствии.

--history_path=...

Путь к файлу, используемому для хранения истории изменений данных локального хранилища.

--debug

Выводит подробные отладочные сообщения в консоль.

--help

Выводит справочное сообщение и завершает выполнение.

--login_url=...

Относительный URL, используемый в качестве страницы авторизации. По умолчанию значение: /_ah/login.

--port=...

Номер порта, на котором ожидает подключения сервер. По умолчанию 8080.

--address=...

Адрес, используемый для сервера. Иногда может понадобиться получить доступ к серверу разработки с другого компьютера вашей сети. Указание адреса 0.0.0.0 в этом параметре позволяет осуществлять как локальный, так и удаленный доступ к приложению. По умолчанию значение localhost.

--clear_datastore

Выполняет очистку локального хранилища до запуска сервера.

--require_indexes

Отключает автоматическое создание определений индексов в файле index.yaml. Вместо этого при выполнении приложением запроса, который требует для своей работы неопределенный индекс, произойдет выдача исключения, подобного ошибке приложения при реальной работе на платформе App Engine.

--smtp_host=...

Имя SMTP сервера, используемого для отправки сообщений.

--smtp_port=...

Номер порта SMTP сервера, используемого для отправки сообщений.

--smtp_user=...

Имя пользователя SMTP сервера, в тех случаях, когда требуется авторизация отправителя.

--smtp_password=...

Пароль пользователя для SMTP сервера, в тех случаях, когда требуется авторизация отправителя.

--enable_sendmail

Выполняет использование для отправки электронной почты локальной программы Sendmail.

--debug_imports

Выводит отладочные сообщения, относящиеся к импортированию модулей, включая пути их поиска и ошибки.