36 votes

Eventlet ou gevent ou Stackless + Twisted, Pylônes, Django et SQL Alchemy

Nous utilisons Tordu largement pour les applications nécessitant une grande asynchrone io. Il y a certains cas où des choses du cpu est liée à la place et pour que nous frayer un pool de processus pour faire le travail et avoir un système pour la gestion de ces travers de multiples serveurs ainsi - tout est fait dans l'Tordu. Fonctionne très bien. Le problème est qu'il est difficile d'amener de nouveaux membres de l'équipe jusqu'à la vitesse. L'écriture de code asynchrone Tordus nécessite un près de la verticale de la courbe d'apprentissage. C'est comme si les humains ne pense pas que la façon naturelle.

Nous envisageons une approche mixte peut-être. Peut-être garder le xmlrpc partie serveur et des processus de gestion des Tordus et de mettre en œuvre les autres trucs dans le code qui regarde au moins synchrone dans une certaine mesure, bien que n'étant pas en tant que tel. J'aime explicite, plus implicite, de sorte que j'ai à penser un peu plus. De toute façon sur greenlets - comment ça marche? Donc, il y a Stackless et comme vous pouvez le voir dans mon Gallentean avatar je suis bien conscient de l'énorme succès qu'on l'utilise pour les CCP phare de EVE Online jeu de première main. Qu'en est Eventlet ou gevent? Bien pour l'instant, seul Eventlet travaille avec des Tordus. Cependant gevent prétend être plus rapide que ce n'est pas un pur python mise en œuvre, mais repose plutôt sur libevent à la place. Il prétend également avoir moins de idiosyncrasies et les défauts. gevent Il est maintenue par 1 gars dans la mesure où je peux dire. Cela me rend un peu méfiante, mais tous les grands projets de cette façon, alors... Alors il y a PyPy - je n'ai pas encore terminé la lecture de celui-là encore - juste vu dans ce fil de discussion: les Inconvénients de la Stackless.

Si déroutant, - je me demandais ce que le diable à faire des sons comme Eventlet est probablement le meilleur pari, mais est-il vraiment assez stable? Personne là-bas n'ont aucune expérience avec elle? Doit-on aller avec Stackless plutôt comme il a été autour et est une technologie éprouvée comme Tordu est ainsi - et ils ne travaillent de pair. Mais encore, je déteste avoir à avoir une version de Python pour ce faire. de quoi faire....

Un peu désagréable à l'entrée de blog frappé le clou sur la tête pour moi: Asynchrone IO pour les Adultes je n'ai pas l'Tordu est comme Java remarque que pour moi Java est généralement à l'endroit où vous êtes dans le thread état d'esprit mais peu importe. Néanmoins, si ce singe patch chose fonctionne vraiment juste comme ça, puis wow. Juste wow!

28voto

Denis Bilenko Points 2975

Vous pourriez vouloir vérifier:

Eventlet et gevent ne sont pas vraiment comparable à Stackless, parce que Stackless est livré avec une bibliothèque standard qui n'est pas conscient de tasklets. Il existe des implémentations de socket pour Stackless mais il n'y a pas quelque chose d'aussi complet que gevent.le singe. CCP ne pas utiliser de bare bones Stackless, il a quelque chose appelé Stackless I/O qui autant que je sache est windows uniquement et n'a jamais été open source (?).

Les deux eventlet et gevent pourrait être fait pour fonctionner sur Stackless plutôt que sur greenlet. À un certain moment, nous avons même essayé de le faire comme un GSoC projet mais n'a pas trouvé d'étudiant.

4voto

fijal Points 2430

Répondant à une partie de votre question - si vous regardez http://speed.pypy.org, vous verrez que l'utilisation de twisted au-dessus de PyPy peut vous donner quelques améliorations. Cela dépend bien sûr de votre charge de travail, mais cela vaut probablement la peine de vérifier.

À votre santé,
fidèle

0voto

Ben Ford Points 1336

J'ai construit une petite application Web en temps réel au-dessus de eventlet et de repoze.bfg (j'ai abandonné django il y a longtemps). J'ai trouvé que les correctifs Eventlet et Monkey étaient aussi simples que Ted.

0voto

Robert Zaremba Points 1925

Gevent n'est pas du pur Python, et cela dépend strictement de CPython. Parmi les infrastructures Web que vous avez mentionnées, Eventlet (OpenStack) et Tornado (FriendsFeed, Quora) constituent le déploiement le plus important.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X