web-dev-qa-db-fra.com

Pourquoi utiliser Django sur Google App Engine?

Lors de la recherche sur Google App Engine (GAE), il est clair que l'utilisation de Django est extrêmement populaire pour le développement en Python sur GAE. J'ai parcouru le Web pour trouver des informations sur les coûts et les avantages de l'utilisation de Django, pour découvrir pourquoi il est si populaire. Bien que j'ai pu trouver une grande variété de sources sur comment pour exécuter Django sur GAE et les différentes méthodes pour le faire, je n'ai trouvé aucune analyse comparative sur pourquoi Django est préférable à en utilisant le framework webapp fourni par Google.

Pour être clair, il est immédiatement évident pourquoi l'utilisation de Django sur GAE est utile pour les développeurs ayant une compétence existante dans Django (une majorité de Python développeurs Web, sans aucun doute) ou du code existant dans Django (où l'utilisation de GAE est plus un exercice de portage). Mon équipe, cependant, évalue GAE pour une utilisation sur un tout- nouveau projet et notre expérience existante est avec TurboGears, pas Django.

Il a été assez difficile de déterminer pourquoi Django est bénéfique pour une équipe de développement lorsque les bibliothèques BigTable ont remplacé l'ORM de Django, les sessions et l'authentification sont nécessairement modifiées et les modèles de Django (si cela est souhaitable) sont disponibles sans utiliser l'ensemble Django pile.

Enfin, il est clair que l'utilisation de Django a l'avantage de fournir une "stratégie de sortie" si nous voulions plus tard nous éloigner de GAE et avoir besoin d'une plate-forme pour cibler l'exode.

Je serais extrêmement reconnaissant de l'aide pour souligner pourquoi en utilisant Django est mieux que d'utiliser webapp sur GAE. Je suis également complètement inexpérimenté avec Django, donc élaboration sur de plus petites fonctionnalités et/ou commodités qui fonctionnent sur GAE sont également précieuses pour moi.

87
Travis Bradshaw

Nous utilisons Django sur nos instances Appengine principalement lorsque nous devons servir de véritables sites Web à l'utilisateur. Il a un excellent moteur de modèle, un routage d'URL et tout le traitement des demandes/réponses/erreurs intégré. Donc même si nous ne pouvons pas utiliser la magie orm/admin, cela a beaucoup à faire.

Pour les services api, nous avons construit quelque chose de très simple sur webob . Il est beaucoup plus léger car il n'a pas besoin de tout ce que Django offre, et donc un peu plus rapide dans certaines situations.

19
Koen Bok

Django n'est probablement pas le bon choix pour vous, si vous êtes sûr que GAE vous convient. Les forces des deux technologies ne s'alignent pas très bien - vous perdez complètement beaucoup du merveilleux orme de Django sur GAE, et si vous l'utilisez, vous écrivez du code qui n'est pas vraiment directement adapté à bigtable et au fonctionnement de GAE.

La chose à propos de GAE est qu'il obtient la grande évolutivité en vous forçant à écrire du code qui évolue facilement à partir de zéro. Vous ne pouvez tout simplement pas faire un certain nombre de choses qui évoluent mal (bien sûr, vous pouvez toujours écrire du code mal évolutif, mais vous évitez certains pièges). Le compromis est que vous finissez vraiment par coder autour du framework, si vous utilisez quelque chose comme Django qui est conçu pour un environnement différent.

Si vous vous voyez quitter jamais GAE pour une raison quelconque, investir dans l'infrastructure, il y a un problème pour vous. Le codage pour bigtable signifie qu'il sera plus difficile de passer à une architecture différente (bien que le projet Apache travaille à résoudre cela pour vous avec le composant HBase du projet Hadoop). Il faudrait encore beaucoup de travail pour passer de GAE.

Quel est le facteur de motivation derrière l'utilisation de GAE, en plus d'être un produit Google et un mot à la mode cool? Y a-t-il une raison pour laquelle la mise à l'échelle en utilisant quelque chose comme l'offre de mediatemple ne fonctionnera probablement pas bien pour vous? Êtes-vous sûr que les échelles GAE conviennent à votre application? Comment le coût se compare-t-il aux serveurs dédiés, si vous vous attendez à atteindre ce domaine de performances? Pouvez-vous bien résoudre votre problème en utilisant les outils fournis par GAE, par rapport à une configuration de serveur à charge équilibrée plus traditionnelle?

Cela dit, à moins que vous n'ayez absolument besoin de la mise à l'échelle limite-ridicule qu'offre GAE, je suggère personnellement de ne pas laisser ce service particulier structurer votre choix de cadre. J'aime Django, donc je dirais que vous devriez l'utiliser, mais pas sur GAE.

Edit (juin 2010): Comme mise à jour de ce commentaire un peu plus tard: Google a annoncé des capacités de type sql pour GAE qui ne sont pas gratuites, mais vous permettront de faire facilement des choses comme exécuter des commandes de style SQL pour générer des rapports sur vos données.

De plus, il y a des changements à venir dans le langage de requête GAE qui permettront des requêtes complexes d'une manière beaucoup plus facile. Regardez les vidéos de Google I/O 2010.

De plus, il y a du travail en cours pendant le projet Summer of Code 2010 qui devrait apporter un support sans SQL à Django core, et par extension, rendre le travail avec GAE beaucoup plus facile.

GAE devient de plus en plus attrayant en tant que plateforme d'hébergement.

Modifier (août 2011):

Et Google vient d'augmenter considérablement le coût pour la plupart des utilisateurs de la plate-forme en modifiant la structure des prix. Le problème de verrouillage s'est amélioré (si votre application est assez grande, vous pouvez déployer les alternatives Apache), mais pour la plupart des applications, exécuter des serveurs ou des déploiements VPS est moins cher.

Très peu de gens ont vraiment des problèmes de bigdata. "Oh mon démarrage pourrait évoluer un jour" n'est pas un problème de bigdata. Créez des trucs maintenant et sortez-les à l'aide des outils standard.

51
Paul McMillan

J'ai fait beaucoup de projets sur GAE. Certains dans Django, certains dans leur cadre normal.

Pour les petites choses, j'utilise généralement leur cadre normal pour plus de simplicité et de rapidité. Comme http://stdicon.com , http://yaml-online-parser.appspot.com/ , ou http: // text-twist .appspot.com / .

Pour les grandes choses, je choisis Django pour profiter de tous les middleware et plugins Nice. Comme http://metaward.com .

Fondamentalement, mon test décisif est Cela me prendra-t-il plus de 2 semaines pour écrire et être un [~ # ~] vrai [~ # ~] projet logiciel? Si oui, allez avec Django pour les addons.

Il a l'avantage supplémentaire de, si votre projet est mal adapté à BigTable, vous vous déconnectez rapidement (comme je l'ai fait BigTable est-il lent ou suis-je stupide? )

16
Paul Tarjan

Je pense que toutes ces réponses sont un peu obsolètes.

Vous pouvez maintenant utiliser Google Cloud SQL

Django est un tiers populaire Python. Lorsqu'il est couplé à Google Cloud SQL, toutes ses fonctionnalités peuvent être entièrement pris en charge par les applications exécutées sur App Engine . Prise en charge de l'utilisation de Google Cloud SQL avec Django est fourni par un backend de base de données personnalisé Django qui enveloppe le backend MySQL de Django).

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

une nouvelle nouvelle est qu'il existe un support BETA pour PostgreSQL

11
andilabs

J'ai de l'expérience avec Django et non GAE. D'après mes expériences avec Django c'était une configuration très simpliste et le processus de déploiement était incroyablement facile en termes de projets web . Certes, je devais apprendre Python pour vraiment avoir une bonne prise sur les choses, mais à la fin de la journée je le réutiliserais sur un projet. C'était il y a presque 2 ans avant qu'il n'atteigne 1.0 donc ma connaissance est un peu dépassée.

Si vous vous inquiétez de changer de plate-forme, ce serait un meilleur choix, je suppose.

3
Woot4Moo

Si vous décidez d'exécuter votre application en dehors de GAE, vous pouvez toujours utiliser Django. Vous n'aurez pas vraiment beaucoup de chance avec la webapp GAE

0
George Godik

Je suis encore très nouveau dans le développement du moteur Google App, mais les interfaces Django fournit semblent bien plus belles que celles par défaut. Les avantages dépendront de ce que vous utilisez pour exécuter Django sur le moteur d'application. L'assistant Google App Engine pour Django vous permet d'utiliser toute la puissance de Google App Engine avec certaines fonctionnalités Django sur le côté.

Django non-rel essaie de fournir autant de puissance de Django que possible, mais fonctionne sur le moteur d'application pour une évolutivité supplémentaire possible. En particulier, il comprend Django modèles (l'une des principales fonctionnalités de Django), mais il s'agit d'une abstraction qui fuit en raison des différences entre les bases de données relationnelles et bigtable. Il y aura très probablement des compromis en termes de fonctionnalité et d'efficacité. , ainsi qu'un nombre accru de bogues et de bizarreries. Bien sûr, cela pourrait valoir la peine dans des circonstances comme celles décrites dans la question, mais sinon, je recommanderais fortement d'utiliser l'assistant au début, car vous avez alors la possibilité de vous déplacer vers moteur d'application pur ou Django non-rel plus tard. De plus, si vous passez à Django non-rel, votre connaissance accrue du fonctionnement du moteur d'application sera être utile si l'abstraction Django se brise jamais - certainement beaucoup plus utile que la connaissance des bizarreries/solutions de contournement pour Django non-rel si vous échangez dans l'autre sens).

0
Casebash

Je ne peux pas répondre à la question, mais vous voudrez peut-être examiner Web2py. Il est similaire à Django à bien des égards, mais sa couche d'abstraction de base de données fonctionne sur GAE et prend en charge la plupart des fonctionnalités GAE (pas toutes mais nous essayons de rattraper le retard). De cette façon, si GAE fonctionne pour vous êtes bien, si ce n'est pas le cas, vous pouvez déplacer votre code vers une autre base de données (SQLite, MySQL, PostgreSQL, Oracle, MSSQL, FireBird, DB2, Informix, Ingres et - bientôt - Sybase et MongoDB).

0
mdipierro