Django и App Engine
Я хотел проверить статус запуска Django в Google App Engine в настоящее время и каковы преимущества запуска django в GAE вместо простого использования Webapp.
Функция главного убийцы Django, IMHO, является повторно используемыми приложениями и промежуточным программным обеспечением. К сожалению, большинство современных приложений Django используют модели или модельные формы (django-tags, django-reviews, django-profiles, приложения Pinax).
Итак, каковы оставшиеся функции или преимущества, которые django имеет, которые все еще могут работать в Google App Engine (кроме отключенных: популярные приложения django, промежуточное программное обеспечение для сеанса и аутентификации, пользователи и администраторы, модели и т.д.).
Также есть список приложений Django, которые также работают в App Engine?
Ответы
Ответ 1
app-engine-patch в настоящее время имеет большинство функций django, включая сеансы, contrib.auth, сайты и некоторые другие стандартные приложения django. Однако его главный недостаток (мое мнение) заключается в том, что он использует zip файл модифицированной версии django для достижения этой функциональности, и текущие поддерживающие устройства, похоже, не отстают от текущих выпусков django. В настоящее время, похоже, консенсус прошлых и нынешних сопровождающих о том, что этот подход слишком громоздкий для поддержания, и, следовательно, никто в настоящее время его не поддерживает.
google-app-engine-django, использует подход патча обезьяны последней версии django, включенной в рабочую среду разработки GAE, при условии, что google продолжает track django, вы будете постоянно обновляться относительно django. Однако в настоящее время он не полностью портирован contrib.auth, поэтому вы можете выполнять аутентификацию только с учетными записями google, что может быть большим недостатком в зависимости от того, хотите ли вы, чтобы пользовательские модели Contrib.auth работали так, как вы их знаете, на sql-серверах. В помощнике нет поддержки администратора django, так как есть в app-engine-patch. Существует вилка django-app-engine-django, которая добавляется в некоторые из приложений Contrib, таких как flatpages, sites и sitemaps. Также обратите внимание: он работает только с версиями django до версии 1.1, до issue # 3230 Django 1.2 добавляется в use_library, если вы не загружаете django в zip файл файл.
На горизонте оригинальный разработчик app-engine-patch работает над веткой django-nonrel, но это может быть довольно вдали от включения в выпуск django. Этот поток разработчиков django содержит много информации об этих усилиях.
В отдельности существует проект google summer of code, работающий над интегрированием некоторых аспектов нерелевых db.
Ответ 2
app-engine-patch получает большинство из тех вещей, которые работают внутри AppEngine - так что вы можете (в основном) использовать прямые модели Model, использовать пользователей Django и admin и т.д.
Я использовал его только для довольно простых проектов (новичок в django), но они утверждают, что большинство приложений Django будут работать с (в лучшем случае) незначительными изменениями в appengine. Например, app-engine-patch использует классы AppEngine Model, а не классы Django; и некоторые из основных представлений, которые слишком неэффективны для работы в Appengine.
добавлено: google-app-engine-django похоже; но предоставляет BaseModel, который похож на Django BaseModel. Я понимаю, что google-app-engine-django был выпущен Google, а затем разветвлен, чтобы создать приложение-движок-патч. У поддерживающих app-engine-patch, похоже, есть несколько разных целей от создателей google-app-engine-django, поэтому вы можете обнаружить, что один из двух соответствует вашим потребностям лучше, чем другой.
Google предоставил несколько статей о запуске приложений Django на appengine; самая последняя на самом деле является гостевой записью от авторов приложения-engine-patch.
Ответ 3
У меня был лучший успех, просто выбрав и выбирая функции Django, которые мне нужны, и исправляя их самостоятельно в webapp. В моем последнем проекте я фактически просто вырезал материал webapp полностью. Я все еще импортирую и вызываю несколько функций утилиты webapp, но в основном это ручное приложение, созданное из хороших частей GAE и Django.
Ответ 4
Вам может быть интересно проверить web2py, другую структуру Python, которая предположительно имеет меньшее трение между GAE и "обычным" веб-сервером.
Ответ 5
В настоящее время довольно просто использовать полный Django для GAE:
https://developers.google.com/appengine/articles/django-nonrel#ps
Ответ 6
Версия Django с App Engine обновлена до версии 1.2.5 с последней версией SDK (1.4.2, журнал изменений). Эта версия доступна через объявление use_library()
, поэтому вам больше не нужно возиться с патчем обезьян в той же степени.
Ответ 7
В среде исполнения программы GoogleAppEngine (GAE) Python 2.7 предусмотрено несколько сторонних библиотек, которые могут использовать ваше приложение, помимо стандартной библиотеки Python, инструментов GAE и среды выполнения GAE Python. Один из них - Django. Ниже приведена копия с страницы документов GAE в сторонних библиотеках:
Чтобы использовать Django в Python 2.7, укажите приложение WSGI и библиотеку Django в app.yaml:
...
handlers:
- url: /.*
script: main.app # a WSGI application in the main module global scope
libraries:
- name: django
version: "1.2"