Frage

Wir verwenden Verdrehte in großem Umfang für Anwendungen viele Asynchrone Kommunikation erfordern. Es gibt einige Fälle, in denen Sachen CPU sind gebunden statt und für das wir einen Pool von Prozessen laichen die Arbeit und haben ein System zur Verwaltung dieses über mehrere Server als auch zu tun - alles getan, was in Verdrehte. Funktioniert super. Das Problem ist, dass es zu bringen, neue Teammitglieder bis zu Geschwindigkeit schwer. Schreiben asynchronen Code in Verdrehte erfordert eine nahezu vertikale Lernkurve. Es ist, als ob der Mensch glaube einfach nicht, dass die Art und Weise natürlich.

Wir denken vielleicht einen gemischten Ansatz. Vielleicht die anderen Sachen in Code hält das xmlrpc Server-Teil und Prozessmanagement in Verdrehte und umzusetzen, dass zu einem gewissen Grad zumindest sieht synchron, während nicht als solche zu sein. Dann wieder mag ich explizit über implizite so dass ich darüber ein bisschen mehr denken. Wie dem auch sei auf greenlets - wie gut funktioniert das Zeug Arbeit? So gibt es Stackless und wie man es von meinem gallen Avatar sehen Ich bin sehr wohl bewusst dem großen Erfolg im Einsatz ist es für CCP-Flaggschiff EVE Online-Spiel aus erster Hand. Was ist Eventlet oder GEVENT? Nun jetzt nur Eventlet Arbeiten mit Verdrehte. Jedoch GEVENT Ansprüche, schneller zu sein, da es nicht eine reine Python-Implementierung ist, sondern stützt sich auf libevent statt. Sie behauptet auch weniger Idiosynkrasien und Mängel zu haben. GEVENT Es wurde von 1 Kerl so weit gehalten ist, als ich sagen kann. Das macht mich etwas misstrauisch, aber alle großen Projekte starten auf diese Weise so ... Dann gibt es PyPy - ich habe nicht einmal zu Ende gelesen zu, dass man noch - sah es nur in diesem Thread: Nachteile von Stackless .

So verwirrend - ich frage mich, was zum Teufel zu tun - klingt wie Eventlet ist wahrscheinlich die beste Wette, aber ist es wirklich stabil genug? Jemand da draußen hat keine Erfahrung mit ihm? Sollten wir mit Stackless gehen, statt wie es schon und ist eine bewährte Technologie - wie Verdreht ist auch - und sie funktionieren gut zusammen. Aber immer noch mit Ich hasse es eine separate Version von Python haben, dies zu tun. was zu tun ist ....

Diese etwas widerwärtig Blogeintrag traf den Nagel auf dem Kopf für mich aber: Asynchronous IO für Grownups ich nicht bekommen, um die verdrehte ist wie Java Bemerkung ist, wie ich Java ist in der Regel, wo Sie in der Threading mindset sind aber was auch immer. Dennoch, wenn dieser Affe Patch Ding funktioniert wirklich einfach so dann wow. Einfach wow!

War es hilfreich?

Lösung

Sie möchten vielleicht überprüfen:

Eventlet und GEVENT ist nicht wirklich vergleichbar mit Stackless, weil Stackless Schiffen mit einer Standard-Bibliothek, die nicht bewusst Tasklets ist. Es gibt Implementierungen von Buchse für Stackless aber es gibt nichts, was so umfassend wie < a href = "http://www.gevent.org/gevent.monkey.html" rel = "noreferrer"> gevent.monkey . CCP nicht bloße Knochen Stackless verwendet, hat es etwas namens Stackless I / O, die AFAIK nur für Windows und wurde nie sourced offen (?).

Sowohl eventlet und GEVENT vorgenommen werden könnten, auf Stackless laufen und nicht auf greenlet. Irgendwann haben wir versucht, auch diese als Projekt GSoC zu tun aber keine Schüler finden.

Andere Tipps

Die Beantwortung Teil Ihrer Frage - wenn man sich http://speed.pypy.org ‘ kann geben Ihnen einige speedups werden sehen, dass oben auf PyPy verdreht werden. Dies hängt natürlich von Ihrer Arbeitsbelastung, aber es ist wahrscheinlich wert.

Cheers,
Fijal

ich einen kleine Echtzeit-Web-App auf der eventlet und repoze.bfg gebaut habe (habe ich aufgegeben auf django eine ganze Weile her). Ich habe eventlet und Affen gefunden Patchen genauso einfach zu sein wie Ted sagt.

GEVENT nicht reinen Python, und es hängt streng auf CPython. Von Web-Frameworks erwähnt Eventlet (Openstack) und Tornado (FriendsFeed, Quoren) hat die größte deploy.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top