Wir verwenden Twisted extensiv für Anwendungen, die eine große Menge an asynchronem io benötigen. Es gibt einige Fälle, in denen stuff cpu gebunden ist, und dafür erzeugen wir einen Pool von Prozessen, um die Arbeit zu erledigen und haben ein System, um diese auch auf mehreren Servern zu verwalten - alles in Twisted. Funktioniert super. Das Problem ist, dass es schwierig ist, neue Teammitglieder auf den neuesten Stand zu bringen. Das Schreiben von asynchronem Code in Twisted erfordert eine nahezu vertikale Lernkurve. Es ist so, als würden die Menschen nicht so natürlich denken.Eventlet oder gevent oder Stackless + Twisted, Pylons, Django und SQL Alchemy
Wir denken vielleicht über einen gemischten Ansatz nach. Vielleicht halten Sie den xmlrpc Server Teil und Prozess-Management in Twisted und implementieren Sie die anderen Sachen in Code, der zumindest teilweise synchron aussieht, während es nicht so ist. Dann wiederum mag ich explizit über implizit, also muss ich darüber ein bisschen mehr nachdenken. Auf jeden Fall auf Greenlets - wie gut funktioniert das Zeug? Da ist also Stackless und wie ihr von meinem Gallente-Avatar sehen könnt, ist mir der enorme Erfolg bei der Verwendung von CCPs Flaggschiff EVE Online aus erster Hand bewusst. Was ist mit Eventlet oder gevent? Nun, nur das Eventlet funktioniert mit Twisted. Gevent behauptet jedoch, schneller zu sein, da es keine reine Python-Implementierung ist, sondern stattdessen auf Libevent setzt. Es behauptet auch, weniger Idiosynkrasien und Defekte zu haben. gevent Es wird von 1 Kerl so weit wie ich sagen kann. Das macht mich etwas misstrauisch, aber alle großen Projekte beginnen auf diese Weise ... Dann gibt es PyPy - ich habe noch nicht einmal darüber gelesen - habe es nur in diesem Thread gesehen: Drawbacks of 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 Erfahrung damit? Sollten wir stattdessen mit Stackless gehen und es ist bewährte Technologie - genau wie Twisted - und sie funktionieren gut zusammen. Aber ich hasse es immer noch, eine separate Version von Python zu haben, um das zu tun. was zu tun ....
Dieser etwas anstößige Blog-Eintrag traf den Nagel auf den Kopf für mich obwohl: Asynchronous IO for Grownups Ich bekomme nicht die Twisted ist wie Java Bemerkung zu mir Java ist in der Regel, wo Sie in der Geisteshaltung, aber was auch immer. Aber wenn das Affe-Patch-Ding wirklich so funktioniert, dann wow. Einfach wow!
Können Sie weiter kommentieren, was Sie meinen, dass MySQL nicht gut für OLTP ist? –
Ich nahm das heraus, da es für den Rest des Artikels nicht relevant war. Aber was es schlecht macht, ist die abgrundtiefe Unterstützung für Sichten, langsame Trigger und gespeicherte Prozeduren, ein eher primitiver Abfrageoptimierer und schwer zu entziffernde/nicht genügend Informationen für Abfragepläne (keine Pläne für Aktualisierungen/Löschungen/Einfügungen verfügbar). Erfordert Indizes für alle Fremdschlüsselspalten, die häufig zu so vielen nutzlosen Indizes führen, dass Sie schließlich gar keine Fremdschlüssel implementieren müssen, um schwerwiegende Leistungseinbußen zu vermeiden. Ich könnte fortfahren ... – Khorkrak
Twisted ist eine der bekanntesten Python-Bibliotheken. Wie würde der Wechsel zu weitaus obskureren Projekten dazu beitragen, dass jemand schneller "auf Touren kommt"? –