Question

Nous utilisons intensivement Twisted pour les applications nécessitant beaucoup de io asynchrone. Il y a des cas où des choses est lié au lieu cpu et que nous frayer un pool de processus pour faire le travail et un système de gestion de ces sur plusieurs serveurs ainsi - tout fait dans Twisted. Fonctionne très bien. Le problème est qu'il est difficile d'apporter de nouveaux membres de l'équipe jusqu'à la vitesse. L'écriture du code asynchrone dans Twisted nécessite une courbe d'apprentissage verticale proche. Il est comme si les humains ne pensent pas de cette façon naturellement.

Nous envisageons peut-être une approche mixte. Peut-être garder la partie serveur xmlrpc et la gestion des processus dans Twisted et mettre en œuvre les autres choses dans le code qui au moins regards synchrones dans une certaine mesure, sans être en tant que tel. Là encore, je tiens explicite sur implicite, donc je dois penser à cela un peu plus. Quoi qu'il en soit sur greenlets - comment fonctionne bien que le travail de choses? Donc, il y a Stackless et comme vous pouvez le voir sur mon avatar Gallente Je suis bien conscient de l'énorme succès dans son utilisation pour EVE phare jeu en ligne de première main du PCC. Qu'en est-il eventlet ou gevent? Eh bien pour le moment ne fonctionne eventlet avec Twisted. Toutefois demandes gevent d'être plus rapide que ce n'est pas un pur mise en œuvre du python, mais repose plutôt sur libevent à la place. Il prétend aussi avoir moins idiosyncrasies et les défauts. gevent Il est maintenu par 1 gars, autant que je peux dire. Cela me fait un peu méfiants, mais tous les grands projets commencent cette façon si ... Et puis il y a PyPy - Je n'ai pas encore fini de lire à ce sujet un encore - juste vu dans cette discussion: de Stackless Désavantages.

confusion - Je me demande ce que le diable à faire - sons comme eventlet est probablement le meilleur pari, mais est-il vraiment assez stable? Tout le monde là-bas ont une expérience avec elle? Faut-il aller avec Stackless plutôt comme il a été autour et est une technologie éprouvée - comme Twisted est aussi bien - et ils travaillent ensemble bien. Mais je déteste avoir à avoir une version séparée de Python pour le faire. ce qu'il faut faire ....

Cette entrée de blog un peu odieux a mis le doigt sur la tête pour moi si: IO Asynchronous pour Grownups Je ne suis pas le Twisted est d'être comme remarque Java me Java est généralement où vous êtes dans l'état d'esprit de filetage mais peu importe. Néanmoins, si cette chose patch de singe fonctionne vraiment comme ça alors wow. Juste wow!

Était-ce utile?

La solution

Vous pouvez consulter:

eventlet et gevent ne sont pas vraiment comparables à Stackless, parce que les navires Stackless avec une bibliothèque standard qui ne connaît pas tasklets. Il existe des implémentations de pour Stackless mais il n'y a rien aussi complet que < a href = "http://www.gevent.org/gevent.monkey.html" rel = "noreferrer"> gevent.monkey . PCC ne pas utiliser les os nus Stackless, il a quelque chose appelé Stackless E / S qui est AFAIK fenêtres seule et n'a jamais été open source (?).

Les deux 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 en tant que projet GSoC mais n'a pas trouvé un étudiant.

Autres conseils

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

Cheers,
Fijal

Je l'ai construit une application web peu en temps réel sur le dessus de eventlet et repoze.bfg (j'ai donné sur django il y a un certain temps). Je l'ai trouvé eventlet et le singe rapiéçage être aussi facile que dit Ted.

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

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top