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

Общие вопросы по Google App Engine

Какие языки программирования поддерживаются платформой Google App Engine?

На текущий момент, Google App Engine позволяет писать приложения только на языке Python версии 2.5. В целях безопасности, некоторые модули языка Python, написанные на C, были в системе отключены. Так как Google App Engine не поддерживает запись файлов на диск, то некоторые библиотеки, которые требуют для работы эту функциональность, могут частично некорректно работать. В нашей документации для разработчиков содержится полный обзор возможностей среды выполнения Python. Описание библиотек языка Python, которые были частично или полностью отключены, может быть найдено здесь.

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

Какие фреймворки поддерживает Google App Engine?

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

Можно ли начать разработку приложения платформы Google App Engine, если я не имею аккаунта в системе?

Конечно! Даже если вы не зарегистрировались на сайте Google App Engine, то можете загрузить среду разработки SDK и начать работу с системой.

Сколько приложений я могу создать в Google App Engine?

В течение периода предварительного тестирования каждый разработчик может создать до 10 приложений, используя свой административный аккаунт в Google App Engine. На текущий момент пока не существует возможности удалить приложение, после того, как оно было зарегистрировано в системе.

Как можно заблокировать существующее приложение?

Для того, чтобы отключить существующее приложение, сначала необходимо удалить описание всех его обработчиков из файла app.yaml. Затем необходимо поместить в файл app.yaml ссылку на обработчик, который будет указывать на несуществующий файл. После чего, используя программу appcfg.py, опубликуйте новую версию файла app.yaml. После того, как он будет загружен на сервер, ваше приложение будет заблокировано.

Размещение какого контента допускается на серверах Google App Engine?

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

Что означают графики в Административной консоли моего приложения?

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

  • Request/Second (запросов в секунду): Количество запросов, полученных вашим приложением от пользователей за каждую секунду
  • Errors/Second (ошибок в секунду): Количество ошибок, которые произошли в приложении за секунду
  • Bytes Received/Second (принято байт в секунду): Трафик в байтах, который был принят системой за секунду
  • Bytes Sent/Second (отправлено байт в секунду): Трафик в байтах, который был передан системой за секунду
  • Megacycles Used/Second (использовано мегациклов в секунду): Количество тактов процессора сервера, использованных приложением за каждую секунду
  • Milliseconds Used/Second (использовано миллисекунд из секунды): Количество миллисекунд, за которое приложение выполнило обработку запросов, в секунду
  • Number of Quota Denials/Second (ограничения квоты в секунду): Сколько раз запрос к приложению был отклонен по причине превышения допустимых квот. Полное описание ограничений и квот в тестовом периоде находится здесь.

Как можно получить список популярных URI моего приложения?

Раздел Popular URIs Административной консоли отображает список наиболее часто используемых адресов страниц (URI) вашего приложения за последние 24 часа. Так как каждое приложение и так запущено в отдельном доменном имени, эта информация не включается в URI. Список с колонкой слева отображает наиболее популярные запросы к вашему приложению в формате URI. Соответствующий список в колонке справа выводит количество обращений по каждому из таких URI.

Как можно получить список запросов, на которые приложение выдает ошибку?

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

В тех приложения, в которые не был включен файл favicon.ico, могут отображаться ошибки, сообщающие о том, что URI вида /favicon.ico содержит наибольшее число ошибок. Favicon.ico является файлом, который запрашивается браузером каждого пользователя при попытке загрузки страницы сайта. Favicon.ico - это иконка вашего сайта и она обычно отображается в адресной строке браузера, слева от нее следует адрес сайта.

Для вашего приложения файл favicon.ico должен быть статическим изображением. Вы можете загрузить файл favicon.ico на сервер вместе с кодом приложения и внести изменения в конфигурационный файл app.yaml, для указания платформе обработчика запроса адреса /favicon.ico. Ниже приведен пример этой настройки в файле app.yaml для адреса /favicon.ico. Мы предполагаем, что файл favicon.ico находится в каталоге static/images:

- url: /favicon.icostatic_files: static/images/favicon.icoupload: static/images/favicon.ico

Что такое GQL?

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

Почему для всех запросов должны существовать свои индексы и как их можно определить?

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

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

Как можно авторизовать пользователей моего приложения?

Использование интерфейса Users API позволит вам авторизовывать пользователей с помощью аккаунтов Google или пользовательских аккаунтов домена, обслуживаемого Службами Google. Эти две различные формы авторизации не могут быть совместно использованы в одном приложении. Пожалуйста, ознакомьтесь со статьей как настроить приложение для авторизации пользователей домена Служб Google.

При использовании Users API, когда приложение предлагает пользователю войти в систему, он будет направлен на страницу авторизации Google, где введет свое имя и пароль. Затем пользователь будет перенаправлен обратно к вашему приложению, которое получит доступ к учетной записи посетителя с помощью объекта User.

Какие библиотеки языка Python не поддерживаются платформой Google App Engine?

Небольшой процент модулей языка Python, написанных на языке C, недоступен под Google App Engine. Полный список поддерживаемых модулей находится здесь. Отключенные модули можно разделить на следующие категории:

  • Библиотеки, которые работают с файловыми базами данных, не поддерживаются Google App Engine
  • Сетевые сокеты отключены
  • Система не может запускать подпроцессы, таким образом некоторые методы модуля os недоступны для использования
  • Поддержка тредов не доступна
  • В целях безопасности большинство модулей, написанных на языке C, деактивировано
  • Прочие возможности, которые были ограничены:
    • модуль marshal отключен
    • модуль cPickle является ссылкой на модуль pickle
    • все системные вызовы отключены

Пожалуйста, обратите внимание, что все сторонние библиотеки, которые используют для своей работы подобные возможности не будут работать в платформе Google App Engine (например, пакеты mysql, postgresql и прочие).

Почему мое приложение было заблокировано?

Приложение может быть заблокировано, если оно нарушает наши Условия использования сервиса. В дополнении, если в течение периода предварительного тестирования платформы, приложение будет потреблять чрезмерные системные ресурсы из-за ошибки и неэффективных алгоритмов, используемых разработчиком, мы оставляем за собой право заблокировать его до тех пор, пока разработчик не исправит эти ошибки. После этого работа приложения на платформе Google App Engine может быть снова возобновлена.

Почему мое приложение может превысить квоту?

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

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

Как можно сообщить о том, что какое-то приложение нарушает Условия использования сервиса?

Для того, чтобы сообщить о нарушении Условий использования Google App Engine, пожалуйста, свяжитесь с нами. Мы определим, правда ли приложение нарушает условия и, при необходимости, свяжемся с его разработчиком для решения этих вопросов.

Может ли сервер, поставляемый в составе SDK, обслуживать запросы внешних пользователей?

Программа dev_appserver разработана для проведения локального тестирования приложений и не принимает никакие внешние подключения по умолчанию. Вы можете изменить это поведение путем передачи параметра -a <hostname> при запуске сервера, однако использовать на постоянной основе этот метод не рекомендуется, так как среда разработки не была протестирована на обеспечение должной безопасности и может содержать уязвимости.