WebFramework für Python 3?

Sockets, TCP/IP, (XML-)RPC und ähnliche Themen gehören in dieses Forum
Antworten
amiganer68
User
Beiträge: 18
Registriert: Mittwoch 1. Juli 2009, 14:20

Hallo!

Da ich mich noch immer nicht für ein Framework entschieden habe, so habe ich doch ein Kriterium zur Anforderung hinzu gefügt: Es sollte leicht mölich sein auf Python 3 umzusteigen.

Was haben wir denn da schon zur Verfügung:

CherryPy: Die Developer Version für Py3 exitiert schon, hat da schon jemand mit gespielt?

Bottle: Das könnte man per WSGI hinter einen Apache-Server klemmen, dann kann man auf CherryPy verzichten.....

evoque: ist eine Template-Engine, die schon auf Py3 laufen soll, hat die schon mal einer Benutzt? Sieht an sich nicht schlecht aus...

SQLAlchemy: der nächste Release soll mit Py3 laufen (Version 0.6), es gibt aktuell nur keinen Treiber für MySQL, der für PostgresSQL läuft aber schon, da pure Python. Weiß einer wann der Release kommen soll? Ist die Developer Version schon lauffähig?

Fazit: Wenn ich also Bottle hinter einen Apache-Server klemme, PostgresSQL installiere und die Dev-VErsion von SQLAlchemy verwende, dann kann ich doch eigentlich jetzt schon mit Python 3 arbeiten.?!

Als Template-Engine verwende ich dann die von bottle....

MfG
Christian
Benutzeravatar
Defnull
User
Beiträge: 778
Registriert: Donnerstag 18. Juni 2009, 22:09
Wohnort: Göttingen
Kontaktdaten:

Die aktuelle WSGI Spezifikation ist unter Python3 nicht mehr sinnvoll und teilweise undefiniert, daher gibt es momentan keine Python3-Kompatiblen WSGI-Frameworks. Bevor nicht eine korrigierte PEP für WSGI raus kommt, wird auch Bottle, obwohl es prinzipiell unter Python3 läuft, ein paar Probleme machen. z.B. funktionieren Datei-Uploads nicht mit Python3, da cgi.FieldStorage nicht mit dem neuen String/Byte System klar kommt.

Ich würde dir dringend raten, mit Python2.6 zu entwickeln und erst auf Python3 um zu steigen, wenn eine neue WSGI-Spezifikation draußen ist und die Frameworks angepasst sind. An deinem App-Code ändert sich dabei ja auch nicht besonders viel. 2to3 sollte den Umstieg recht reibungslos möglich machen, wenn man vorher etwas auf die Aufwärtskompatibilität achtet.

Ich kann dir aber versprechen, das Bottle 100% Python3 kompatibel sein wird, sobald die neue Spezifikation draußen ist. Bis dahin muss man leider ohne File Uploads aus kommen...
Bottle: Micro Web Framework + Development Blog
amiganer68
User
Beiträge: 18
Registriert: Mittwoch 1. Juli 2009, 14:20

Hallo!

Das ist irgendwie schade, denn ich habe mir das in den Kopf gesetzt.
Würde es dann nicht helfen, CherryPy doch einzustzen, dann ist das Projekt "StandAlone"?

Auf der Seite vom WSGI gibt es übrigens eine Version für Python3.

Auf jedenfall kann es nicht schaden, darauf zu achten Komponenten zu verwenden, die schon angekündigt haben, Py3 kompatibel zu sein.

Ich muß mal langsam mit dem Projekt anfangen....

MfG
Christian
sma
User
Beiträge: 3018
Registriert: Montag 19. November 2007, 19:57
Wohnort: Kiel

amiganer68 hat geschrieben:Ich muß mal langsam mit dem Projekt anfangen....
Wenn du cutting edge willst, die aber wenigstens einigermaßen geht, nimmt lieber Ruby 1.9 als Python 3.1 ;) Rack 1.0 als weitergedachtes WSGI funktioniert da nämlich im Gegensatz zu Python auch bei der neusten Sprachversion.

Stefan
mitsuhiko
User
Beiträge: 1790
Registriert: Donnerstag 28. Oktober 2004, 16:33
Wohnort: Graz, Steiermark - Österreich
Kontaktdaten:

sma hat geschrieben:Rack 1.0 als weitergedachtes WSGI funktioniert da nämlich im Gegensatz zu Python auch bei der neusten Sprachversion.
Ja, Ruby's Unicode-Support is in dem Punkt wesentlich besser.

Wer fürs Web entwickelt mit Python soll um Python 3 für die nächsten Paar Jahre einfach einen großes Schritt rum machen. Da wird sich noch viel ändern.
TUFKAB – the user formerly known as blackbird
sma
User
Beiträge: 3018
Registriert: Montag 19. November 2007, 19:57
Wohnort: Kiel

Möglicherweise kann man das neue tornadoweb-Rahmenwerk relativ einfach für Python 3.x portieren. Es benötigt kein WSGI sondern enthält seinen eigenen, asynchron funktionierenden, Webserver.

Es hat zur Zeit ~5600 Zeilen Umfang und im wesentlichen müsste man glaube ich Strings und Bytes unterscheiden, denn HTTP ist auf Bytes definiert, nicht auf Strings, was aber vor Python 3.x leider das selbe war und was einem 2to3 leider nicht abnehmen kann.

Stefan
Antworten