2009-11-22 10 views
11

Ich mag wirklich Tornado und ich möchte es mit Python 3 verwenden, obwohl es für Python-Versionen 2.5 und 2.6 geschrieben ist.Tornado und Python 3.x

Leider scheint die Quelle des Projekts keine Testsuite zu enthalten. Wenn ich richtig verstehe, wäre der WSGI-Teil nicht so einfach zu portieren, da seine Spezifikation nicht für Python 3 yet (?) bereit ist, aber ich bin eher an Tornados asynchronen Funktionen interessiert, daher ist die WSGI-Kompatibilität nicht mein Hauptanliegen, auch wenn es nett wäre.

Grundsätzlich würde ich gerne wissen, was zu prüfen/beachten Sie beim Versuch zu portieren oder ob es bereits Ports/Gabeln bereits (ich konnte nicht finden mit Google oder Surfen github, obwohl ich etwas verpasst haben könnte) .

+0

Schaltungen (http://bitbucket.org/prologic/circuits) hat Python 3 nun schon seit einiger Zeit unterstützt und unterstützt 2.6, 2.7, 3.1, 3.2 und 3.3 –

Antwort

25

vor allem möchte ich für eine Antwort auf ein veraltetes Thema, entschuldigen, aber sobald ich dieses Thema über Google gefunden habe, möchte ich wichtige Informationen zu aktualisieren!

In der Tornado 2.0 fügt Unterstützung für Python 3.2!

https://github.com/facebook/tornado/blob/master/setup.py

http://groups.google.com/group/python-tornado/browse_thread/thread/69415c13d129578b

+3

Genau deshalb ist SO besser als Foren. Themen werden nicht veraltet, Sie können sie nur aktualisieren. Sobald 2.0 veröffentlicht ist, sollte die Frage selbst aktualisiert werden, um dies zu beachten. –

+0

Vielen Dank für Ihr Update! – tosh

13

Software ohne eine anständige Testsuite ist legacy software - selbst wenn es gestern veröffentlicht wurde! -) - so ist der erste wichtige Schritt, eine Testsuite zu bauen; Ich empfehle Feathers 'Buch in der URL, aber Sie können mit this PDF beginnen, was ein Aufsatz ist, ebenfalls von Feathers, der dem Buch vorangeht und eine der wichtigsten Kernideen und -praktiken des Buches zusammenfasst.

Sobald Sie tun den Start einer Testsuite haben, führen Sie es mit Python 2.6 und einer -3 Flagge Sie Dinge zu warnen 2to3 kann stolpern; Sobald diese behoben sind, ist es an der Zeit, 2to3 auszuprobieren und die Testsuite mit Python 3 zu testen. Sie werden zweifellos die Testsuite weiter verbessern müssen, und ich empfehle, regelmäßig alle Verbesserungen an die Upstream-Tornado-Open Source zu senden Projekt - diese Tests werden nützlich sein, jemand wer Tornado zu pflegen oder zu portieren, schließlich nicht nur für Menschen in Python 3 interessiert, so können Sie mit Glück, Anhänger und mehr und mehr Mitwirkende an die Testsuite gewinnen .

Ich kann nicht glauben, dass die Menschen große Open-Source-Projekte veröffentlichen, im Jahr 2009 !!!, ohne anständiges Testsuiten, aber ich vertraue Ihnen, dass dies in der Tat ist das, was die Tornadoers getan haben ...

+0

Gut Kommentare Alex : Es ist eine Schande, weil der Tornado-Code sehr sauber ist, ich habe in letzter Zeit etwas damit gespielt.Komisch, dass es von dem Team gebaut wurde, das heute eine der größten Websites auf dem Planeten betreibt und sie dachten nicht, Tests zu schreiben! +1 – jkp

+0

@jkp, oder vielleicht haben sie intern eine Testsuite, aber würden sie lieber nicht veröffentlichen, es würden zumindest interne Informationen, z.B. die Existenz einer Super-Duper-Test-Infrastruktur, die ihnen einen Wettbewerbsvorteil verschaffen könnte - in einem solchen Fall wäre das ein verständlicher Kompromiss (den Code selbst, aber nicht die Tests freizugeben) - besser als nichts zu veröffentlichen! -). –

+0

Oder die Testsuite und/oder ihr Kabelbaum sind so tief mit einem Haufen anderer Facebook-Infrastruktur verbunden, dass sie den Aufwand für die Bereitstellung einer sterilisierten Testsuite nicht rechtfertigen könnten. –

4

Tornado ist ein gutes Web-Framework über etwas, das aussieht wie twisted, aber hat keine Bugfixes oder Funktionen. Ich habe a port to twisted eine Weile zurück, die im Wesentlichen nur Code entfernt.

Einige dieser Funktionen sind sehr wichtig. Wenn Sie beispielsweise WSGI ausführen, blockieren Sie ein nicht blockierendes Web-Framework. Schlechte Dinge werden passieren. Das asynchrone Web-Framework von Twisted verfügt ebenfalls über einen WSGI-Container, verwendet jedoch deferToThread, um zu verhindern, dass andere Anforderungen blockiert werden. Immer noch nicht der richtige Weg, um eine App zu skalieren, aber sie fällt viel langsamer auseinander.