- PVSM.RU - https://www.pvsm.ru -

Django Framework / Поддержка Django приложений в Google App Engine

Недавно google анонсировал [1] Cloud SQL [2] для своего облака. Но вначале подержки django не было, и вот в начале февраля выходит App Engine 1.6.2 [3] с поддержкой запуска приложений на django. Теперь можно забыть про скакания вокруг app-engine-patch и django-nonre, и пытаться эмулировать реляционную базу данных поверх bigtable.

Нам дают django 1.2 и модуль работы с Cloud SQL из коробки, и мы можем забыть про костыли с упаковкой пакетов в zip архивы. Вот какие шаги нам необходимо сделать для получения простого приложения в облаке:

  1. Для начала необходимо запросить тестовый доступ к Cloud SQL через Google APIs Console [4]. Мне выдали доступ в течений 3-х дней, после этого в консоли мы получим доступ к управлению сервисом.
    Django Framework / Поддержка Django приложений в Google App Engine
  2. После получения доступа нам по сути выдают обычный доступ к выполнению консольных команд mysql, где мы можем создать базу данных.
    Django Framework / Поддержка Django приложений в Google App Engine
  3. Теперь создаем обычное GAE приложение внутри которого будет веб приложение на django + app.yaml файл в который необходимо прописать:
    application: appname version: 1 runtime: python27 api_version: 1 threadsafe: true  libraries: - name: django   version: "1.2"  builtins: - django_wsgi: on

  4. Для того что бы django-приложение сумело обращаться к Cloud SQL необходимо лишь в конфиге для DATABASES прописать:
    DATABASES = {     'default': {         'ENGINE': 'google.appengine.ext.django.backends.rdbms',         'INSTANCE': 'my_project:instance1',         'NAME': 'my_database',     } }

Это основное что необходимо сделать для подготовки приложения. При первой попытки сделать syncdb нас попросят авторизоваться, для этого нужно получить токен через Google APIs Console [4] на вкладке «API Access», и как говорит инструкция [5] расположить его в ~/.googlesql_oauth2.dat (для windows %USERPROFILE%.googlesql_oauth2.dat). Во время syncdb в Cloud SQL создаться необходимая схема базы для приложения и загрузятся fixtures если они есть. Пока разработка идет на локальной машине, приложение работает с sqlite3 базой. После этого можно смело пушить приложение в облако.

ИМХО

Я считаю что гугл сделал правильный шаг, давая SQL базу. У них не получилось выстрелить со своим облаком. Да в то время это смотрелось интересно, но все быстро поняли что оно слишком ограничено, и завязнуф на сервисах google будет очень тяжело перенести приложение куда либо. Да есть инструменты для миграций на амазоноские сервисы, но они не дают гарантий, и в любом случае потребуется N-ое количество человеко часов для переноса. Я не вспомню не одного крупного сайта работающего поверх GAE, был интересный проект [6] интернет магазина, но и тот скорее мертв чем жив. Большие проекты скорее избегают GAE или даже о нем не думают, когда рядом есть амазон, на котором можно построить свою архитектуру, легко смигрироваф при необходимости.
Для тех кому нужно что то поменьше, запустить бложик, сайт визитку и т.п это слишком сложно, да и зачем разбираться в особенностях разработки под GAE, когда можно без особых усилий запустить подобное на специализированных сервисах.
А вот с запуском Cloud SQL ситуация хоть немного может измениться. Теперь можно спокойно запускать django сайты средней сложности на GAE, прикрутить к нему домен, и забыть про администрирование сервера. Только не стоит забывать про то что GAE поддерживает библиотеки написанные только на чистом python, про все сишные модули стоит забыть, а также ограничения на http запросы из приложения. И нам все еще надо будет использовать API GAE для загрузки файлов в хранилище, отсылку email и кэширование в memcache, но даже с этими ограничениями это покроет большую часть нужд для разворачивания «простых» сайтов.

Ссылки:

Автор: yurtaev


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/django-2/2980

Ссылки в тексте:

[1] анонсировал: http://habrahabr.ru/blogs/gae/129907/

[2] Cloud SQL: https://developers.google.com/cloud-sql/

[3] App Engine 1.6.2: http://googleappengine.blogspot.com/2012/01/app-engine-162-released.html

[4] Google APIs Console: https://code.google.com/apis/console

[5] инструкция: https://developers.google.com/cloud-sql/docs/django

[6] проект: http://habrahabr.ru/blogs/gae/70355/