Flacon vs webapp2 pour Google App Engine
Je suis de départ de la nouvelle application Google App Engine et envisage actuellement de deux cadres: Flacon et webapp2. Je suis plutôt satisfait avec construit-dans webapp cadre que j'ai utilisé pour mon précédent application App Engine, donc je pense que webapp2 sera encore mieux et je n'aurai pas de problèmes avec elle.
Cependant, il y a beaucoup de bonnes critiques de la Fiole, j'aime vraiment son approche et toutes les choses que j'ai lu jusqu'à présent dans la documentation et je veux l'essayer. Mais je suis un peu préoccupé par les limitations que je peux faire face à la route avec la Fiole.
Donc la question, est - connaissez-vous des problèmes, des problèmes de performances, les limites (par exemple, système de routage, intégré dans le mécanisme d'autorisation, etc.) que ballon pourrait mettre en application Google App Engine? Par "problème", je veux dire quelque chose que je ne peux pas travailler autour de plusieurs lignes de code (ou tout montant raisonnable de code et des efforts) ou quelque chose qui est complètement impossible.
Et comme une question de suivi: la killer-features en Flacon que vous pensez peut souffler mon esprit et de me faire de l'utiliser malgré tout les problèmes que je peux faire face?
- Je ne sais pas beaucoup sur webapp2, mais j'ai été en utilisant Flacon pendant quelques mois et j'adore ça. J'ai trouvé flacon de plugins qui m'a vraiment aidé à en sortir, comme
flask-babel
pour le support de plusieurs langues, etflask-seasurf
pour CSRF de soutien pour assurer la sécurité de mes formes.
Vous devez vous connecter pour publier un commentaire.
Avertissement: je suis l'auteur de tipfy et webapp2.
Un gros avantage de coller avec l'application web (ou son évolution naturelle, webapp2), c'est que vous n'avez pas à créer vos propres versions pour les SDK des gestionnaires pour votre cadre de votre choix.
Par exemple, différé utilise une webapp gestionnaire. Pour l'utiliser pure Flacon de vue, l'utilisation de werkzeug.Demande et werkzeug.La réponse, vous aurez besoin de mettre en œuvre différée pour elle (comme je l'ai fait ici pour tipfy).
La même chose se passe pour les autres gestionnaires: blobstore (Werkzeug encore ne prend pas en charge les demandes de plage, de sorte que vous aurez besoin d'utiliser WebOb même si vous créez votre propre gestionnaire -- voir tipfy.appengine.blobstore), mail, XMPP et ainsi de suite, ou d'autres qui sont inclus dans le kit de développement dans l'avenir.
Et la même chose arrive pour les bibliothèques créées avec App Engine à l'esprit, comme ProtoRPC, qui est basé sur la webapp et aurait besoin d'un port ou d'un adaptateur de travailler avec d'autres cadres, si vous ne voulez pas mélanger webapp et votre-cadre-de-choix gestionnaires dans la même application.
Donc, même si vous choisissez un autre cadre, vous aurez un) à l'aide d'une webapp dans certains cas spéciaux ou b) ayant pour créer et maintenir votre versions SDK spécifique des gestionnaires ou des fonctionnalités, si vous allez les utiliser.
Je préfère de beaucoup de Werkzeug sur WebOb, mais après plus d'un an, de portage et de maintenir les versions du SDK gestionnaires de travailler en mode natif avec tipfy, j'ai réalisé que c'est une cause perdue -- à l'appui de GAE pour le long terme, le mieux est de rester proche de webapp/WebOb. Il est le soutien pour les bibliothèques du SDK un jeu d'enfant, l'entretien devient beaucoup plus facile, il est plus d'avenir que de nouvelles bibliothèques et SDK fonctionnalités vont travailler hors de la boîte et il y a l'avantage d'une grande communauté de travail autour de la même App Engine outils.
Spécifique webapp2 de la défense est résumée ici. Ajouter à celles webapp2 peut être utilisé en dehors de l'App Engine et est facile à être personnalisés à ressembler à de la populaire micro-cadres et vous avez un bon ensemble de raisons impérieuses d'y aller. Aussi, webapp2 a une grande chance d'être inclus dans une future sortie de SDK (ce qui est extra-officielle, de ne pas me citer 🙂 qui va le pousser en avant et attirer de nouveaux développeurs et des contributions.
Cela dit, je suis un grand fan de Werkzeug et la Pocoo gars et emprunté beaucoup de Fiole et autres (web.py Tornado), mais-et, vous savez, je suis partial -- ci-dessus webapp2 les avantages devraient être pris en compte.
Votre question est très large, mais il semble y avoir pas de gros problèmes à l'aide de ballon sur Google App Engine.
Cette liste de diffusion fil des liens vers plusieurs modèles:
http://flask.pocoo.org/mailinglist/archive/2011/3/27/google-app-engine/#4f95bab1627a24922c60ad1d0a0a8e44
Et voici un tutoriel spécifique à la Fiole /App Engine combinaison:
http://www.franciscosouza.com/2010/08/flying-with-flask-on-google-app-engine/
Aussi, voir App Engine - La Difficulté À Accéder Aux Données De Twitter - Flacon, Flacon de message clignotant échoue au travers des redirections, et Comment puis-je gérer les tiers bibliothèques Python avec Google App Engine? (virtualenv? pip?) pour les questions que les gens ont eu avec la Fiole et Google App Engine.
Pour moi la décision pour webapp2 était facile quand j'ai découvert que le flacon n'est pas un framework orienté objet (depuis le début), tandis que webapp2 est un pur objet framework orienté. webapp2 utilise la Méthode d'Expédition standard pour tous les RequestHandlers (comme flacon de documentation des appels et la met en œuvre, depuis V0.7 dans MethodViews). Alors que dans le flacon MethodViews sont un add-on c'est un principe de base de la conception de webapp2. Si votre logiciel de conception aura un aspect différent à l'aide de deux cadres. Les deux cadres aujourd'hui jinja2 modèles et sont plutôt identiques.
Je préfère ajouter des vérifications de sécurité pour une classe de base RequestHandler et hériter d'elle. C'est aussi bon pour les fonctions de l'utilitaire, etc. Comme vous pouvez le voir par exemple dans le lien [3] vous pouvez remplacer les méthodes pour empêcher l'envoi d'une demande.
Si vous êtes un OO-personne, ou si vous avez besoin de concevoir un RESTE de serveur, je vous recommande webapp2 pour vous. Si vous préférez les fonctions simples avec des décorateurs comme des gestionnaires pour la demande multiple-types, ou vous êtes à l'aise avec OO-héritage puis choisissez flacon. Je pense que les deux cadres d'éviter la complexité et les dépendances de beaucoup plus de cadres comme la pyramide.
Je pense que google app engine prend en charge officiellement flacon cadre. Il y a un exemple de code et tutoriel ici -> https://console.developers.google.com/start/appengine?_ga=1.36257892.596387946.1427891855
Je n'ai pas essayer webapp2 et a constaté que tipfy était un peu difficile à utiliser car il nécessaire de scripts d'installation et de versions que de configurer votre installation de python à l'autre que par défaut. Pour ces raisons et d'autres que je n'ai pas fait mon plus grand projet dépend d'un cadre et j'utilise la plaine webapp au lieu de cela, ajouter la bibliothèque appelée bécher pour obtenir session de la capacité et de django a déjà intégré des traductions pour les mots communs à de nombreux usecases donc, lors de la construction d'une application localisée de django était le bon choix pour mon plus grand projet. Les 2 autres cadres que je effectivement déployées avec des projets dans un environnement de production ont été GAEframework.com et web2py et généralement, il semble que l'ajout d'un cadre qui change de modèle de moteur peut entraîner des incompatibilités entre les anciennes et nouvelles versions.
Donc mon expérience est que je suis d'être réticents à ajouter un cadre à mes projets, à moins qu'ils résoudre le plus avancé des cas d'utilisation (téléchargement de fichiers, multi auth, administrateur de l'interface utilisateur sont 3 exemples les plus avancés, les cas d'utilisation que pas de cadre de gae au moment de la gère bien.