Quand utiliser Tornade, quand utiliser Torsadée / Cyclone / GEvent / autres
Laquelle de ces frameworks /librairies serait le meilleur choix pour bâtiment moderne, multi-utilisateur, application web? J'aimerais avoir un serveur asynchrone qui me permettra d'échelle facile.
Quelle est la solution que va donner la meilleure performance /évolutivité /plus utiles cadre (en termes de facilité d'utilisation et de développement)?
Ce serait formidable si elle fournit une bonne fonctionnalité (websockets, rpc, streaming, etc).
Quels sont les avantages et les inconvénients de chaque solution?
- Faut-il l'un de ces cadres? Qu'est-ce que la planification à faire et quelque chose comme Django, Pylônes, etc... travail?
- Pas de, de la corse pas, mais j'aimerais si il sera asynchrone et aurait un bon support pour les websockets - j'ai mis à jour la question aussi. Je vous remercie.
- Une sorte de vaste question, n'est-ce pas?
- Votre choix dépend des bibliothèques, que vous souhaitez utiliser. Vos bibliothèques - sur la tâche que vous souhaitez résoudre.
- Oui c'est large, mais peut-être olvable. Je me demandais si ces bibliothèques sont utilisées dans la production et quelqu'un, qui est à l'aide de certains d'entre eux de tous les jours est en mesure de dire ce qu'ils sont grands pour les, ce qui manque, etc. Ce qui devrait être la base pour choisir une bibliothèque - peut-être Tordu devraient être considérées amorti quand on parle d'Autoroute ou un Cyclone? Ou mmaybe Autobahn et le Cyclone ne sont pas prêts pour la production et sa maintenance est dans la question? Ou peut-être une Tornade a plus design moderne et l'avenir sera probablement briller et grand et il devrait être LE choix pour le démarrage du projet?
- Il sonne comme question sur les "meilleures pratiques". Pas de solution miracle. Utilisez n'importe quoi et être en mesure de passer rapidement. Dans la production de toutes ces technologies.
- il y a microframeworks comme le flacon, cherrypy, et la bouteille
Vous devez vous connecter pour publier un commentaire.
"Django est d'un haut niveau Web Python cadre qui favorise le développement rapide et propre, pragmatique de la conception". Si vous êtes à la construction de quelque chose qui est similaire à un site de e-commerce, alors vous devriez sans doute aller avec Django. Elle permettra d'obtenir votre travail effectué rapide. Vous n'avez pas à vous soucier trop de la technologie de choix. Il fournit tout ce dont chose dont vous avez besoin à partir d'un modèle de moteur à l'ORM. Il sera légèrement d'opinions sur la façon de structurer votre application, ce qui est bon Si vous me demandez. Et il a la plus forte communauté de toutes les autres bibliothèques, ce qui signifie facile d'aide est disponible.
"Flacon est un microframework pour Python basé sur Werkzeug, Jinja 2 et de bonnes intentions". Méfiez - vous - "microframework" peut être trompeur. Cela ne signifie pas que le Flacon est à moitié cuit, bibliothèque. Ce à dire que le noyau de flacon est très, très simple. Contrairement à Django, Il ne fera pas toute la Technologie des décisions pour vous. Vous êtes libre de choisir n'importe quel modèle de moteur ou de l'ORM qui vous plaît. Même si il est livré avec Jinja moteur de template par défaut, vous êtes toujours libre de choisir notre propre. Autant que je sache Flacon est très pratique pour écrire des Api de points de terminaison (services RESTful).
"Twisted est un événement piloté par les réseaux moteur écrit en python". C'est un moteur de haute performance. La principale raison de sa vitesse est quelque chose qui est appelé à titre de produits reportés. Twisted est construit sur le haut de deferreds. Pour ceux d'entre vous qui ne savent pas à propos de defereds, c'est le mécanisme asynchrone avec l'architecture est atteint. Twisted est très rapide. Mais n'est pas adapté pour l'écriture conventionnelle webapps. Si vous voulez faire quelque chose de faible niveau de mise en réseau des trucs, tordu est votre ami.
"Tornade est un framework web Python et asynchrone de la mise en réseau de la bibliothèque, développé à l'origine par FriendFeed. À l'aide de non-blocage du réseau I/O, la Tornade peuvent s'adapter à des dizaines de milliers de connexions ouvertes, le rendant idéal pour le temps d'interrogation, WebSockets, et d'autres applications qui nécessitent une longue durée de vie de la connexion de chaque utilisateur". Tornade se tient à une certaine où entre Django et Flacon. Si vous voulez écrire quelque chose avec Django ou Flacon, mais si vous avez besoin d'une meilleure performance, vous pouvez opter pour de la Tornade. il peut gérer C10k problème très bien si c'est l'architecture de droit.
"Cyclone est un serveur web cadre pour Python qui implémente la Tornade API comme un Tordu protocole". Maintenant, si vous voulez quelque chose qui est presque aussi performante que Tordu, mais facile à écrire classique webapps? Dites bonjour à cyclone. Je préfère Cyclone plus de Tornade. Il a une API qui est très semblable à une Tornade. Comme une question de fait, c'est un fork de Tornade. Mais le problème est qu'il est en petite communauté. Alexandre Fiori est la seule commiter le repo.
"Pyramide est un général, open source, développement d'application web Python cadre. Son objectif principal est de rendre plus facile pour un développeur Python pour créer des applications web." Je n'ai pas vraiment l'habitude de la Pyramide, mais je suis allé à travers la documentation. Ce que je comprends, la Pyramide est très similaire à Flacon et je pense que vous pouvez utiliser Pyramide où Flacon semble approprié et vice-versa.
MODIFIER: Demande de révision de toutes les autres cadres sont les bienvenus!
Source: http://dhilipsiva.com/2013/05/19/python-libraries-django-twisted-tornado-flask-cyclone-and-pyramid.html
C'est évidemment une un peu biaisé réponse, mais ce n'est pas la même chose qu'un mal réponse; vous devriez toujours utiliser Tordu. J'ai répondu à des questions similaires avant, mais depuis que votre question n'est pas tout à fait la même, voici quelques raisons:
"Meilleure Performance"
Tordu surveille en permanence notre performance au speed.twistedmatrix.com site web. Nous avons également été l'un des premiers projets le suivi sera assuré par PyPy est similaire site, garantissant ainsi la bonne performance de Torsadée sur le moteur d'exécution à toute personne concernée par des applications de haute performance en Python.
"L'évolutivité"
À ma connaissance, aucun de la liste des cadres de prise en charge intégrée pour la mise à l'échelle automatique, ils sont tous des infrastructures de communication, de sorte que vous avez à faire le travail pour la communication entre votre mise à l'échelle de nœuds. Cependant, Tordu a un avantage dans son un support intégré pour le multi en local de traitement. Par souci d'équité, il est un tiers add-on pour Tornado, qui permet de faire la même chose. Dans les versions récentes, Tordu a ajouté des fonctionnalités que d'augmenter le nombre de façons que vous pouvez partager le travail entre les cœurs, et les travaux se poursuivent dans ce domaine. Tordu a aussi un couple de bien intégré, "natif" protocoles RPC, qui offrent un programme de construction-kit pour quelle que soit mise à l'échelle de l'idiome vous souhaitez poursuivre.
"Plus Utile"
Beaucoup de gens semblent trouver Tordu très utile. Tant et si bien que beaucoup d'entre eux ont étendu et leurs extensions disponibles pour vous.
De"fonctionnalité"
Hors de la boîte, Tordu comprend:
Dans ce dernier département, au moins, Tordu semble un gagnant clair pour une fonctionnalité intégrée. Et tout cela, dans un emballage un peu plus de 2 méga-octets!
spawnProcess
, cette planification e/S peuvent être traduits dans l'ordonnancement de la CPU en tant que bien.is a web server framework for Python that implements the Tornado API as a Twisted protocol
) étant légèrement en avant de la Tornade, et tordu (ainsi que gevent) étant d'environ 17% derrière eux à la fois?twisted.web
qui est le serveur web intégré Tordus. Il y a probablement des choses qui pourraient être optimisés là, mais la performance sur un "hello world" de référence n'est pas la seule mesure d'un serveur web ;-).J'aime @Glyphe de réponse.
Twisted est très complet, riche en python cadre.
Tordu et Tornade est très semblable conception.
Et j'aime cette conception très:
Mais je tiens à souligner Tornade, que je préfère, et a récemment gagné en popularité.
Tornade, comme Tordu, utilise rappel style de programmation, mais il peut être incorporé à l'aide de
tornado.gen.engine
(twisted.internet.inlineCallbacks
Tordus).Codebase
Le meilleur commentaire est de http://cyclone.io site. cyclone essaie de mélanger Tordu et Tornade parce que:
Mais en 2011
tornado.platform.twisted
était hors ce qui apporte des fonctionnalités similaires.De Performance
Tornade a beaucoup mieux performance. Il fonctionne parfaitement avec PyPy, et obtenir gain énorme.
Évolutivité
Le même comme des Tordus. Tornade a
tornado.process
et beaucoup de services rpc mis en œuvre sur le dessus de cela.Fonctionnalités
Il y a 71 Tornade package, comparativement à 148 Tordu et 48 Gevent de l'. Mais si vous regardez attentivement, et de calculer la médiane de forfaits de temps de téléchargement, vous pourrez voir que les Tordus sont la plus ancienne, puis Gevent et la Tornade la plus grande fraîcheur.
En outre, il est
tornado.platform.twisted
module qui vous permet de exécuter du code écrit pour Torsadée sur Tornado.Sommaire
Avec Tornade, vous pouvez utiliser un code de Tordu. Il n'est pas nécessaire d'utiliser le cyclone qui seulement rebondissements votre code (votre code devient de plus en plus salissant).
Que pour 2014, la Tornade est considéré comme largement accepté et par défaut async cadre qui travaille à la fois sur python2 et python3. Aussi la dernière version 4.x apporte un lot de fonctionnalités de https://docs.python.org/dev/library/asyncio.html.
J'ai écrit un article, en expliquant pourquoi je considère que Tornade - le meilleur framework web Python où j'ai écrit beaucoup plus sur la Tornade de la fonctionnalité.
(Mise à JOUR: je suis malheureusement surpris par le peu de réponses ici recommander ou même de mentionner Gevent—je ne pense pas que c'est en proportion de la popularité, de la performance et la facilité d'utilisation de cette excellente bibliothèque!)
Gevent et Tordu ne sont pas mutuellement exclusifs, même si le contraire peut sembler évident au premier abord. Il existe un projet
geventreactor
qui permet de relativement en douceur de tirer le meilleur des deux mondes, à savoir:inlineCallbacks
est tout simplement pas à la hauteur de la tâche en termes de performances quand il s'agit de beaucoup de coroutines, et ni en termes de facilité/la transparence de l'utilisation:yield
etDeferreds
partout; souvent difficile de construire des abstractions; horriblement inutiles, les traces de pile avec les deux nusDeferred
s ainsi que, et encore plus avec@inlineCallbacks
.IReactorProcess.spawnProcess
.Personnellement, je suis actuellement en utilisant Gevent 1.0rc2 avec Twisted 12.3 comblé par
geventreactor
. J'ai mis en œuvre mes propres comme des inédits des ajouts et des améliorations de lageventreactor
que je publierai bientôt, nous l'espérons dans le cadre degeventreactor
initiale de dépôt GitHub: https://github.com/jyio/geventreactor.Ma configuration actuelle me permet de programmer dans le beau modèle de programmation de Gevent, et l'effet de levier des choses comme un non-bloquant
socket
,urllib2
et d'autres modules. Je peux utiliser le code Python pour faire régulièrement de choses, par opposition à la courbe d'apprentissage et les inconvénients de faire de même simples, des choses de base Tordus façon. Je peux aussi utiliser facilement la plupart 3e partie les bibliothèques qui sont normalement hors de question Tordue, ou exiger l'utilisation de threads.Je peux aussi éviter complètement l'maladroit et souvent trop complexe de rappel en fonction de la programmation en utilisant greenlets (au lieu de
Deferred
s et des rappels de service, et/ou@inlineCallbacks
).(Cette réponse a été écrit d'après mon expérience personnelle, ayant utilisé à la fois Tordu et Gevent dans de véritables projets de vie, avec beaucoup plus d'expérience à l'aide de Tordu (mais je ne prétends pas être Tordue d'un expert). Le logiciel que j'ai eu à écrire n'a pas eu à utiliser un trop grand nombre d'Tordu de fonctionnalités, donc, en fonction de l'ensemble des fonctions dont vous avez besoin de Tordu, le (relativement indolore) supplémentaire de la complexité du mélange de Gevent et Tordu pourrait ne pas être en vaut la peine.)