python flask google app engine




Warum sollte Django in Google App Engine verwendet werden? (6)

Django ist wahrscheinlich nicht die richtige Wahl für Sie, wenn Sie sicher sind, dass GAE das Richtige für Sie ist. Die Stärken der beiden Technologien passen nicht sehr gut zusammen - Sie verlieren eine Menge von Djangos wundervollem ORM auf GAE, und wenn Sie es verwenden, schreiben Sie Code, der nicht wirklich direkt für BigTable und die Art, wie GAE funktioniert, ist.

Die Sache mit GAE ist, dass es die große Skalierbarkeit erhält, indem es Sie zwingt, Code zu schreiben, der leicht von Grund auf skaliert. Sie können einfach nicht viele Dinge tun, die schlecht skalieren (natürlich können Sie immer noch schlecht skalierenden Code schreiben, aber Sie vermeiden einige Fallstricke). Der Nachteil ist, dass Sie am Ende für das Framework programmieren, wenn Sie etwas wie Django verwenden, das für eine andere Umgebung entwickelt wurde.

Wenn Sie GAE aus irgendeinem Grund verlassen, ist es ein Problem für Sie, in die Infrastruktur investiert zu werden. Codierung für BigTable bedeutet, dass es schwieriger wird, zu einer anderen Architektur zu wechseln (obwohl das Apache-Projekt daran arbeitet, dies mit der HBase-Komponente des Hadoop-Projekts für Sie zu lösen). Es wäre immer noch eine Menge Arbeit, um von GAE abzukommen.

Was ist der treibende Motivator hinter GAE, abgesehen davon, dass es ein Google-Produkt ist, und ein cooles Schlagwort? Gibt es einen Grund, dass die Skalierung mit etwas wie mediametples Angebot wahrscheinlich nicht gut für Sie ist? Sind Sie sicher, dass die GAE-Waagen für Ihre Anwendung geeignet sind? Wie hoch sind die Kosten im Vergleich zu dedizierten Servern, wenn Sie erwarten, zu diesem Leistungsbereich zu gelangen? Können Sie Ihr Problem mit den von GAE bereitgestellten Tools besser lösen als mit herkömmlichen Serverkonfigurationen mit Lastenausgleich?

Wenn Sie nicht wirklich die grenzwertig-lächerliche Skalierung, die GAE bietet, benötigen, würde ich persönlich vorschlagen, dass Sie diesen speziellen Service nicht Ihre Wahl des Frameworks strukturieren lassen. Ich mag Django, also würde ich sagen, Sie sollten es verwenden, aber nicht auf GAE.

Edit (Juni 2010): Als Update zu diesem Kommentar irgendwann später: Google hat sql-ähnliche Fähigkeiten für GAE angekündigt, die nicht kostenlos sind, aber Sie können einfach Dinge wie SQL-Stil-Befehle ausführen, um Berichte über Ihre Daten zu generieren.

Darüber hinaus gibt es anstehende Änderungen an der GAE-Abfragesprache, die komplexe Abfragen viel einfacher ermöglichen. Sehen Sie sich die Videos von Google I / O 2010 an.

Darüber hinaus wird während des Summer of Code 2010-Projekts gearbeitet, das No-SQL-Support für django core bereitstellen soll und dadurch die Arbeit mit GAE wesentlich erleichtert.

GAE wird als Hosting-Plattform immer attraktiver.

Bearbeiten (August 2011):

Und Google hat die Kosten für die meisten Nutzer der Plattform durch eine Änderung der Preisstruktur deutlich erhöht. Das Lock-in-Problem wurde besser (wenn Ihre Anwendung groß genug ist, können Sie die Apache-Alternativen bereitstellen), aber für die meisten Anwendungen sind laufende Server oder VPS-Bereitstellungen günstiger.

Sehr wenige Menschen haben wirklich BigData-Probleme. "Oh mein Startup könnte irgendwann skalieren" ist kein BigData-Problem. Baue jetzt Zeug und bring es mit den Standardwerkzeugen aus der Tür.

Bei der Untersuchung von Google App Engine (GAE) wird deutlich, dass die Verwendung von Django für die Entwicklung von Python auf GAE sehr beliebt ist. Ich habe im Web nach Informationen über die Kosten und Vorteile der Verwendung von Django gesucht, um herauszufinden, warum es so beliebt ist. Während ich in der Lage war, eine Vielzahl von Quellen darüber zu finden, wie man Django auf GAE und den verschiedenen Methoden laufen lässt, habe ich keine vergleichende Analyse darüber gefunden, warum Django der Verwendung des Webapp-Frameworks von Google vorzuziehen ist.

Um es klar zu sagen, es ist sofort ersichtlich, warum die Verwendung von Django auf GAE für Entwickler mit vorhandenen Fähigkeiten in Django (zweifellos ein Großteil der Python-Webentwickler) oder existierendem Code in Django (wo GAE eher eine Portierung ist) nützlich ist. Mein Team evaluiert GAE jedoch für die Verwendung in einem komplett neuen Projekt. Unsere bisherigen Erfahrungen liegen bei TurboGears, nicht bei Django.

Es war ziemlich schwierig zu bestimmen, warum Django für ein Entwicklerteam vorteilhaft ist, wenn die BigTable-Bibliotheken Djangos ORM ersetzt haben, Sessions und Authentifizierung notwendigerweise geändert wurden und Djangos Templating (falls gewünscht) verfügbar ist, ohne den gesamten Django-Stack zu verwenden.

Schließlich ist klar, dass die Verwendung von Django den Vorteil hat, eine "Ausstiegsstrategie" zu bieten, wenn wir später von der GAE wegziehen wollten und eine Plattform brauchen, um den Exodus anzugehen.

Ich wäre sehr dankbar für Hilfe, wenn ich aufzeigen würde, warum Django besser ist als Webapp mit GAE. Ich bin auch komplett unerfahren mit Django, daher ist die Ausarbeitung kleinerer Features und / oder Annehmlichkeiten, die auf GAE arbeiten, auch für mich wertvoll.


Ich bin immer noch sehr neu in der Google App-Engine-Entwicklung, aber die Schnittstellen, die Django bietet, erscheinen viel schöner als die Standardeinstellungen. Die Vorteile hängen davon ab, was Sie zum Ausführen von Django in der App-Engine verwenden. Mit dem Google App Engine-Hilfsprogramm für Django können Sie die volle Leistung der Google App Engine mit einigen Django-Funktionen nutzen.

Django non-rel versucht so viel wie möglich von Djangos Power bereitzustellen, läuft aber auf der App-Engine für eine mögliche zusätzliche Skalierbarkeit. Insbesondere enthält es Django-Modelle (eines von Djangos Kernmerkmalen), aber dies ist eine undichte Abstraktion aufgrund der Unterschiede zwischen relationalen Datenbanken und BigTable. Es wird höchstwahrscheinlich zu Kompromissen bei der Funktionalität und Effizienz sowie zu einer erhöhten Anzahl von Bugs und Macken kommen. Natürlich kann dies unter Umständen wie den in der Frage beschriebenen sinnvoll sein, aber ansonsten wäre es sehr empfehlenswert, den Helfer am Anfang zu verwenden, da Sie dann die Option haben, später entweder zu pure app-engine oder Django non-rel zu wechseln. Wenn Sie zu Django non-rel wechseln, ist Ihr Wissen darüber, wie die App-Engine funktioniert, nützlich, wenn die Django-Abstraktion jemals abbricht - sicherlich viel nützlicher als das Wissen über die Macken / Problemumgehungen für Django non-rel andere Weise.


Ich habe Erfahrung mit Django und nicht GAE. Aufgrund meiner Erfahrungen mit Django war das Setup sehr simpel und der Bereitstellungsprozess war unglaublich einfach in Bezug auf Webprojekte. Zugegeben, ich musste Python lernen, um die Dinge wirklich in den Griff zu bekommen, aber am Ende des Tages würde ich es wieder für ein Projekt verwenden. Das war vor fast 2 Jahren, bevor es 1.0 erreicht hat, also bin ich etwas veraltet.

Wenn Sie sich Sorgen machen, Plattformen zu wechseln, dann wäre dies eine bessere Wahl, nehme ich an.


Ich habe viele Projekte über GAE gemacht. Einige im Django, andere in ihrem normalen Rahmen.

Für kleine Dinge benutze ich normalerweise ihren normalen Rahmen für Einfachheit und Schnelligkeit. Wie http://stdicon.com , http://yaml-online-parser.appspot.com/ oder http://text-twist.appspot.com/ .

Für große Dinge gehe ich mit Django, um all die netten Middleware und Plugins zu nutzen. Wie http://metaward.com .

Grundsätzlich ist mein Lackmustest Will, dass ich mehr als 2 Wochen brauche, um ein REALES Softwareprojekt zu schreiben? Wenn ja, gehen Sie mit Django für die Addons.

Es hat den zusätzlichen Vorteil, dass, wenn Ihr Projekt für BigTable schlecht geeignet ist, Sie schnell portieren (wie ich tat Ist BigTable langsam oder bin ich dumm? )


Wenn Sie sich entscheiden, Ihre App außerhalb von GAE auszuführen, können Sie Django weiterhin verwenden. Mit der GAE-Webapp werden Sie nicht so viel Glück haben


Wir verwenden django in unseren Appengine-Instanzen hauptsächlich, wenn wir dem Benutzer tatsächliche Webseiten anbieten müssen. Es hat eine großartige Template-Engine, URL-Routing und die gesamte Request / Response / Error-Behandlung eingebaut. Selbst wenn wir nicht die magischen orm / admin-Sachen verwenden können, hat es eine Menge dafür.

Für API-Dienste haben wir etwas ganz einfaches auf webob . Es ist viel leichter, weil es nicht alles braucht, was Django bietet, und daher in manchen Situationen auch etwas schneller.







google-app-engine