Podczas badania Google App Engine (GAE) widać, że używanie Django jest niezwykle popularne w programowaniu w Pythonie na GAE. Przeszukuję sieć, aby znaleźć informacje o kosztach i korzyściach używania Django, aby dowiedzieć się, dlaczego jest tak popularne. Chociaż udało mi się znaleźć wiele różnych źródeł dotyczących sposobu uruchamiania Django w GAE i różnych metod robienia tego, nie znalazłem żadnej analizy porównawczej na temat tego, dlaczego Django jest lepsze od korzystania z frameworka aplikacji internetowej dostarczanego przez Google.
Aby było jasne, od razu widać, dlaczego używanie Django w GAE jest przydatne dla programistów z istniejącym zestawem umiejętności w Django (bez wątpienia większość programistów internetowych w Pythonie) lub istniejącym kodem w Django (gdzie używanie GAE jest bardziej ćwiczeniem portowania). Mój zespół jednak ocenia GAE do wykorzystania w zupełnie nowym projekcie, a nasze dotychczasowe doświadczenia dotyczą TurboGears, a nie Django.
Trudno było ustalić, dlaczego Django jest korzystne dla zespołu programistów, kiedy biblioteki BigTable zastąpiły ORM Django, sesje i uwierzytelnianie są koniecznie zmienione, a szablony Django (jeśli jest to pożądane) są dostępne bez użycia całego stosu Django.
Wreszcie, jasne jest, że używanie Django ma tę zaletę, że zapewnia „strategię wyjścia”, jeśli później chcieliśmy odejść od GAE i potrzebujemy platformy do kierowania exodusu.
Byłbym bardzo wdzięczny za pomoc we wskazaniu, dlaczego używanie Django jest lepsze niż używanie aplikacji webowej w GAE. Jestem też kompletnie niedoświadczony z Django, więc rozwinięcie mniejszych funkcji i / lub udogodnień, które działają w GAE, jest również dla mnie cenne.
źródło
Odpowiedzi:
Używamy django w naszych instancjach appengine głównie wtedy, gdy musimy udostępniać użytkownikowi rzeczywiste strony internetowe. Ma świetny silnik szablonów, routing adresów URL i całą wbudowaną obsługę żądań / odpowiedzi / błędów. Więc nawet jeśli nie możemy używać magicznych rzeczy orm / admin, ma wiele do zaoferowania.
Dla usług API stworzyliśmy coś bardzo prostego
webob
. Jest znacznie lżejszy, ponieważ nie potrzebuje wszystkiego, co oferuje django, a zatem jest trochę szybszy w niektórych sytuacjach.źródło
Django prawdopodobnie nie jest właściwym wyborem dla Ciebie, jeśli jesteś pewien, że GAE jest właśnie dla Ciebie. Mocne strony tych dwóch technologii nie pasują do siebie zbyt dobrze - całkowicie tracisz wiele wspaniałego ormu Django w GAE, a jeśli go używasz, piszesz kod, który nie jest bezpośrednio odpowiedni dla bigtable i sposobu, w jaki działa GAE.
Rzecz w GAE polega na tym, że uzyskuje wielką skalowalność, zmuszając cię do pisania kodu, który łatwo skaluje się od podstaw. Po prostu nie możesz zrobić wielu rzeczy, które słabo się skalują (oczywiście, nadal możesz pisać słabo skalowalny kod, ale unikniesz niektórych pułapek). Kompromis polega na tym, że naprawdę kończysz kodowanie wokół frameworka, jeśli używasz czegoś takiego jak Django, które jest zaprojektowane dla innego środowiska.
Jeśli zauważysz, że kiedykolwiek opuszczasz GAE z jakiegokolwiek powodu, inwestujesz w infrastrukturę, jest to dla ciebie problem. Kodowanie dla bigtable oznacza, że trudniej będzie przejść na inną architekturę (chociaż projekt Apache pracuje nad rozwiązaniem tego problemu za pomocą składnika HBase projektu Hadoop). Przeniesienie się z GAE wciąż wymagałoby dużo pracy.
Co motywuje używanie GAE, oprócz bycia produktem Google i fajnym modnym hasłem? Czy jest jakiś powód, dla którego skalowanie za pomocą czegoś takiego jak oferta mediatemple prawdopodobnie nie zadziała dobrze? Czy jesteś pewien, że sposoby skalowania GAE są odpowiednie dla Twojej aplikacji? Jak wypada koszt w porównaniu z serwerami dedykowanymi, jeśli spodziewasz się dostać do tej dziedziny wydajności? Czy możesz dobrze rozwiązać swój problem, korzystając z narzędzi dostarczanych przez GAE, w porównaniu z bardziej tradycyjną konfiguracją serwera z równoważeniem obciążenia?
Wszystko to powiedziawszy, chyba że absolutnie pozytywnie potrzebujesz skrajnie niedorzecznego skalowania, które oferuje GAE, osobiście sugerowałbym, aby ta konkretna usługa nie ustrukturyzowała wybór frameworka. Lubię Django, więc powiedziałbym, że powinieneś go używać, ale nie w GAE.
Edycja (czerwiec 2010): Jako aktualizacja tego komentarza jakiś czas później: Google ogłosił funkcje GAE podobne do sql, które nie są darmowe, ale pozwolą ci łatwo wykonywać takie czynności, jak uruchamianie poleceń w stylu SQL w celu generowania raportów na temat twoich danych.
Ponadto nadchodzą zmiany w języku zapytań GAE, które pozwolą na tworzenie złożonych zapytań w znacznie łatwiejszy sposób. Obejrzyj filmy z konferencji Google I / O 2010.
Co więcej, w ramach projektu Summer of Code 2010 trwają prace, które powinny zapewnić obsługę jądra django bez obsługi sql, a co za tym idzie, znacznie ułatwić pracę z GAE.
GAE staje się coraz bardziej atrakcyjna jako platforma hostingowa.
Edycja (sierpień 2011):
Firma Google właśnie znacznie podniosła koszt większości użytkowników platformy, zmieniając strukturę cen. Problem z blokowaniem się poprawił (jeśli Twoja aplikacja jest wystarczająco duża, możesz wdrożyć alternatywy dla apache), ale w przypadku większości aplikacji uruchamianie serwerów lub wdrożenia VPS są tańsze.
Bardzo niewiele osób ma naprawdę duże problemy z danymi. „Och, mój startup może kiedyś się skalować” nie jest problemem z dużymi danymi. Twórz rzeczy teraz i wyciągaj je za drzwi, używając standardowych narzędzi.
źródło
Zrobiłem wiele projektów na GAE. Niektóre w django, inne w ich normalnym frameworku.
W przypadku małych rzeczy zwykle używam ich normalnych ram dla prostoty i szybkości. Podobnie jak http://stdicon.com , http://yaml-online-parser.appspot.com/ lub http://text-twist.appspot.com/ .
W przypadku dużych rzeczy używam django, aby wykorzystać wszystkie fajne oprogramowanie pośrednie i wtyczki. Podobnie jak http://metaward.com .
Zasadniczo mój test lakmusowy brzmi: Czy to zajmie mi więcej niż 2 tygodnie, aby napisać i być PRAWDZIWYM projektem oprogramowania? Jeśli tak, przejdź z django do dodatków.
Ma tę dodatkową zaletę, że jeśli twój projekt źle pasuje do BigTable, szybko się przenosisz (tak jak ja. Czy BigTable jest wolny, czy jestem głupi? )
źródło
Myślę, że wszystkie te odpowiedzi są nieco przestarzałe.
Teraz możesz użyć
Google Cloud SQL
https://cloud.google.com/python/django/appengine
kolejną świeżą wiadomością jest to, że istnieje wsparcie BETA dla PostgreSQL
źródło
Mam doświadczenie w używaniu Django, a nie GAE. Z moich doświadczeń z Django wynika, że była to bardzo uproszczona konfiguracja, a proces wdrażania był niezwykle łatwy pod względem projektów internetowych. To prawda, że musiałem nauczyć się Pythona, aby naprawdę dobrze się opanować, ale pod koniec dnia użyłem go ponownie w projekcie. To było prawie 2 lata temu, zanim osiągnęło 1.0, więc moja wiedza jest nieco przestarzała.
Jeśli martwisz się o zmianę platform, przypuszczam, że byłby to lepszy wybór.
źródło
Nie mogę odpowiedzieć na pytanie, ale możesz zajrzeć do web2py. Pod wieloma względami jest podobny do Django, ale jego warstwa abstrakcji bazy danych działa na GAE i obsługuje większość funkcji GAE (nie wszystkie, ale staramy się nadrobić zaległości). W ten sposób, jeśli GAE działa świetnie, jeśli nie, możesz przenieść swój kod do innej bazy danych (SQLite, MySQL, PostgreSQL, Oracle, MSSQL, FireBird, DB2, Informix, Ingres, a wkrótce - Sybase i MongoDB ).
źródło
Jeśli zdecydujesz się uruchomić swoją aplikację poza GAE, nadal możesz używać Django. Z aplikacją internetową GAE nie będziesz miał tyle szczęścia
źródło
Wciąż jestem bardzo nowy w rozwoju silnika aplikacji Google, ale interfejsy, które zapewnia Django, wydają się znacznie ładniejsze niż domyślne. Korzyści będą zależeć od tego, czego używasz do uruchamiania Django w silniku aplikacji. Pomocnik Google App Engine dla Django umożliwia wykorzystanie pełnej mocy Google App Engine z niektórymi funkcjami Django po stronie.
Django non-rel stara się zapewnić jak najwięcej mocy Django, ale działa na silniku aplikacji, aby zapewnić dodatkową skalowalność. W szczególności zawiera modele Django (jedna z podstawowych funkcji Django), ale jest to nieszczelna abstrakcja ze względu na różnice między relacyjnymi bazami danych a bigtable. Najprawdopodobniej wystąpią kompromisy w zakresie funkcjonalności i wydajności, a także zwiększona liczba błędów i dziwactw. Oczywiście może to być tego warte w okolicznościach takich jak te opisane w pytaniu, ale w przeciwnym razie zdecydowanie zalecamy użycie helpera na początku, ponieważ wtedy możesz później przejść do czystego silnika aplikacji lub Django non-rel. Ponadto, jeśli przełączysz się na Django non-rel,
źródło