Pull to refresh

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

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

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

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

  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 на вкладке «API Access», и как говорит инструкция расположить его в ~/.googlesql_oauth2.dat (для windows %USERPROFILE%\.googlesql_oauth2.dat). Во время syncdb в Cloud SQL создаться необходимая схема базы для приложения и загрузятся fixtures если они есть. Пока разработка идет на локальной машине, приложение работает с sqlite3 базой. После этого можно смело пушить приложение в облако.

ИМХО


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

Ссылки:
Tags:
Hubs:
+30
Comments 20
Comments Comments 20

Articles