Зачем использовать Django в Google App Engine?

При исследовании Google App Engine (GAE) ясно, что использование Django чрезвычайно популярно для разработки в Python на GAE. Я просматривал веб-страницы, чтобы найти информацию о затратах и ​​преимуществах использования Django, чтобы узнать, почему он так популярен. Хотя мне удалось найти множество источников о том, как запустить Django в GAE и о различных методах этого, я не нашел сравнительного анализа того, почему Django предпочтительнее использовать инфраструктуру webapp, предоставляемую Google.

Чтобы быть ясным, сразу видно, почему использование Django в GAE полезно для разработчиков с существующим набором навыков в Django (большинство веб-разработчиков Python, без сомнения) или существующим кодом в Django (где использование GAE является скорее переносом упражнение). Моя команда, однако, оценивает GAE для использования в совершенно новом проекте, и наш существующий опыт связан с TurboGears, а не с Django.

Было довольно сложно определить, почему Django выгодно команде разработчиков, когда библиотеки BigTable заменили ORM Django, сеансы и аутентификация обязательно меняются, а шаблоны Django (если желательно) доступны без использования всего стека Django.

Наконец, ясно, что использование Django имеет то преимущество, что предоставляет "стратегию выхода", если мы позже захотим отойти от GAE и вам нужна платформа для таргетинга на исход.

Я был бы очень благодарен за помощь в том, чтобы указать, почему использование Django лучше, чем использование webapp на GAE. Я также полностью неопытен с Django, поэтому разработка более мелких функций и/или удобств, которые работают на GAE, также ценна для меня.

Ответ 1

Мы используем django для наших экземпляров appengine, главным образом, когда мы должны обслуживать фактические веб-сайты для пользователя. Он имеет отличный механизм шаблонов, маршрутизацию URL-адресов и всю обработку запросов/ответов/ошибок. Поэтому, даже если мы не можем использовать магический материал orm/admin, у него есть много возможностей для этого.

Для служб api мы построили что-то очень просто поверх webob. Это гораздо более легкий вес, потому что ему не нужно все, что предлагает django, и, следовательно, немного быстрее в некоторых ситуациях.

Ответ 2

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

Дело в GAE заключается в том, что он получает большую масштабируемость, заставляя вас писать код, который легко масштабируется с нуля. Вы просто не можете делать много вещей, которые плохо масштабируются (конечно, вы все равно можете писать плохо масштабирующий код, но вы избегаете некоторых подводных камней). Компромисс заключается в том, что вы действительно кодируете вокруг рамки, если вы используете что-то вроде Django, предназначенное для другой среды.

Если вы видите, что когда-либо покидаете GAE по какой-либо причине, инвестируя в инфраструктуру, для вас есть проблема. Кодирование для bigtable означает, что будет сложнее перейти к другой архитектуре (хотя проект Apache работает над тем, чтобы решить эту проблему с помощью компонента HBase проекта Hadoop). Было бы еще много работы по переходу от GAE.

Какой движущий мотиватор использует GAE, помимо того, что он является продуктом Google, и классное модное слово? Есть ли причина, что масштабирование с использованием чего-то вроде предложения mediatemple вряд ли будет хорошо работать для вас? Вы уверены, что способы масштабирования GAE подходят для вашего приложения? Как стоимость сравнивается с выделенными серверами, если вы ожидаете добраться до этой области производительности? Можете ли вы правильно решить свою проблему с помощью инструментов, предоставляемых GAE, по сравнению с более традиционной настройкой сервера с балансировкой нагрузки?

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

Изменить (июнь 2010): Как обновление к этому комментарию через некоторое время: Google анонсировала SQL-подобные возможности для GAE, которые не являются бесплатными, но позволят вам легко выполнять такие действия, как выполнение команд в стиле SQL для генерации отчетов о ваших данных.

Кроме того, на язык запросов GAE появляются предстоящие изменения, которые позволят сложным запросам намного проще. Посмотрите видео из Google I/O 2010.

Кроме того, в рамках проекта Summer of Code 2010 выполняется работа, которая должна обеспечить поддержку без sql для ядра django, и, в дополнение, значительно упростить работу с GAE.

GAE становится более привлекательной в качестве платформы хостинга.

Изменить (август 2011):

И Google просто повысил стоимость для большинства пользователей платформы, значительно изменив структуру ценообразования. Проблема блокировки стала лучше (если ваше приложение достаточно велико, вы можете развернуть альтернативы apache), но для большинства приложений работающие серверы или развертывание VPS дешевле.

Очень немногие люди действительно сталкиваются с проблемами bigdata. "О, мой стартап может масштабироваться когда-нибудь" - это не проблема больших данных. Создайте материал сейчас и вытащите его из комнаты, используя стандартные инструменты.

Ответ 3

Я сделал много проектов на GAE. Некоторые в джанго, некоторые в их нормальных рамках.

Для небольших вещей я обычно использую их нормальную структуру для простоты и быстроты. Например http://stdicon.com, http://yaml-online-parser.appspot.com/ или http://text-twist.appspot.com/.

Для больших вещей я иду с django, чтобы воспользоваться всеми хорошими промежуточными и плагинами. Например http://metaward.com.

В принципе, мой тест лакмусовой бумажки: "Это займет у меня больше 2 недель, чтобы написать и стать программным проектом REAL? Если это так, перейдите к django для аддонов.

У этого есть дополнительное преимущество, если ваш проект плохо подходит для BigTable, тогда вы быстро переносите (например, я сделал Медленнее ли BigTable или я тупой?)

Ответ 4

Я думаю, что все эти ответы немного устарели.

Теперь вы можете использовать Google Cloud SQL

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

https://cloud.google.com/appengine/docs/python/cloud-sql/django

но обратите внимание на отказ от ответственности:

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

Ответ 5

У меня есть опыт использования Django, а не GAE. Из моего опыта работы с Django это была очень упрощенная настройка, и процесс развертывания был невероятно легким с точки зрения веб-проектов. Конечно, мне пришлось изучить Python, чтобы действительно хорошо разбираться в вещах, но в конце дня я буду использовать его снова в проекте. Это было почти 2 года назад, до того, как оно достигло 1,0, так что я немного устарел.

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

Ответ 6

Я не могу ответить на вопрос, но вы можете посмотреть в web2py. Он во многом похож на Django, но его уровень абстракции базы данных работает на GAE и поддерживает большинство функциональных возможностей GAE (не все, но мы пытаемся догнать). Таким образом, если GAE отлично работает, если это не так, вы можете переместить свой код на другой db (SQLite, MySQL, PostgreSQL, Oracle, MSSQL, FireBird, DB2, Informix, Ingres и - вскоре Sybase и MongoDB).

Ответ 7

Если вы решили запустить приложение вне GAE, вы все равно можете использовать Django. У вас действительно не будет такой удачи с помощью GAE webapp

Ответ 8

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

Django non-rel пытается предоставить как можно больше мощности Django, но работает на платформе приложений для возможной дополнительной масштабируемости. В частности, он включает в себя модели Django (одну из основных функций Django), но это нечеткая абстракция из-за различий между реляционными базами данных и большой таблицей. Скорее всего, будут компромиссы по функциональности и эффективности, а также к увеличению количества ошибок и причуд. Конечно, это может стоить того, что было в таких ситуациях, как описано в вопросе, но в противном случае настоятельно рекомендовал бы использовать помощника в начале, так как тогда у вас есть возможность перейти к чистым приложениям-движкам или к нерегулярному Django позже. Кроме того, если вы переключитесь на Django non-rel, ваши расширенные знания о том, как работает движок приложения, будут полезны, если абстракция Django когда-либо ломается - безусловно, гораздо полезнее, чем знание об ошибках/обходных методах для Django non-rel, если вы меняете другим способом.