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


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

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

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

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

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

8 86

8 ответов:

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

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

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

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

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

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

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

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

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

кроме того, есть работа, выполняемая в течение лета кода Проект 2010 года, который должен обеспечить поддержку no-sql для ядра django и, соответственно, значительно упростить работу с GAE.

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

Edit (Август 2011):

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

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

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

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

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

в основном моя лакмусовая бумажка это займет у меня более 2 недель, чтобы написать и быть реальные программный проект? если это так, пойдите с django для аддонов.

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

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

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

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

https://cloud.google.com/python/django/appengine

еще одна свежая новость заключается в том, что существует бета-поддержка PostgreSQL

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

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

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

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

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

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