Eventlet ou gevent ou Stackless + Twisted, Pylons, Django et SQL Alchemy

nous utilisons largement Twisted pour les applications nécessitant beaucoup d'io asynchrone. Il y a des cas où des choses sont reliées au cpu à la place et pour cela nous produisons un ensemble de processus pour faire le travail et avons un système pour les gérer sur plusieurs serveurs aussi bien - le tout fait dans Twisted. Fonctionne très bien. Le problème est qu'il est difficile de mettre les nouveaux membres de l'équipe au courant. L'écriture de code asynchrone dans Twisted nécessite une courbe d'apprentissage quasi verticale. C'est comme si les humains ne le faisaient pas pense comme ça naturellement.

nous envisageons peut-être une approche mixte. Peut-être garder la partie du serveur xmlrpc et la gestion des processus dans Twisted et mettre en œuvre les autres choses dans le code qui semble au moins synchrone dans une certaine mesure tout en n'étant pas comme tel. J'aime explicite, plus implicite, de sorte que j'ai à penser un peu plus. De toute façon sur greenlets - comment ça marche? Il n'y a donc pas de place, et comme vous pouvez le voir de mon avatar Gallentéen, je vais bien. conscient de l'énorme succès dans son utilisation pour le jeu en ligne phare EVE du PCC. Qu'en est Eventlet ou gevent? Pour L'instant, seul Eventlet fonctionne avec Twisted. Cependant gevent prétend être plus rapide car il ne s'agit pas d'une implémentation python pure mais dépend plutôt de libevent. Il prétend également avoir moins d'idiosyncrasies et de défauts. gevent Il est maintenue par 1 gars dans la mesure où je peux dire. Cela me rend un peu perplexe, mais tous les grands projets commencent de cette façon. si... Puis il y a PyPy - Je n'ai pas encore fini de lire sur celui - ci-vient de le voir dans ce fil: inconvénients de Stackless .

si confus - je me demande ce que l'enfer à faire-ressemble à Eventlet est probablement le meilleur pari, mais est-ce vraiment assez stable? Personne là-bas n'ont aucune expérience avec elle? Devrait-on plutôt opter pour Stackless, car il existe déjà une technologie éprouvée - tout comme Twisted est aussi bien et qu'ils travaillent bien ensemble. Mais je déteste quand même avoir à avoir une version séparée de Python pour faire ça. de quoi faire....

cette entrée de blog quelque peu odieux a frappé le clou sur la tête pour moi bien que: asynchrone IO pour les adultes Je ne comprends pas La Tordue est comme Java remarque comme pour moi Java est typiquement où vous êtes dans l'état d'esprit filetage, mais peu importe. Néanmoins si ce patch de singe fonctionne vraiment comme ça alors wow. Juste wow!

36
demandé sur Community 2010-06-15 22:32:50

4 réponses

Vous pourriez vouloir vérifier:

Eventlet et gevent ne sont pas vraiment comparables à Stackless, parce que les navires Stackless avec une bibliothèque standard qui n'est pas au courant des tasklets. Il existe des implémentations de la prise pour Stackless mais il n'y a rien d'aussi complet que gevent.singe . CCP n'utilise pas les os nus empilés, il a quelque chose appelé empilable I / O qui AFAIK est windows-seulement et n'a jamais été ouvert de source (?).

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

28
répondu Denis Bilenko 2010-06-16 04:21:28

répondre à une partie de votre question - si vous regardez http://speed.pypy.org vous verrez que l'utilisation de twisted sur le dessus de PyPy mai vous donner quelques vitesses. Cela dépend bien sûr de votre charge de travail, mais il est probablement intéressant de vérifier.

Cheers,

fijal

4
répondu fijal 2010-07-29 19:23:10

j'ai construit une petite application web en temps réel sur eventlet et repoze.bfg (j'ai abandonné django il y a un moment). J'ai trouvé eventlet et monkey patching aussi faciles que Ted le dit.

0
répondu Ben Ford 2010-09-23 14:32:09

Gevent n'est pas Python pur, et cela dépend strictement de CPython. De web frameworks vous avez mentionné Eventlet (OpenStack) et Tornado (FriendsFeed, Quora) a le plus grand déploiement.

0
répondu Robert Zaremba 2013-01-29 18:29:56