Open Source im professionellen Einsatz

Web.py - ein schlankes Web-Framework für Python

Die Zeit läuft

,

Nach aufgeblähten Frameworks, Monsterbibliotheken und riesigen Webplattformen ist es Zeit für eine Schlankheitskur. Das Python-Framework Web.py setzt dabei neue Maßstäbe: Es besteht aus nur einer Datei. Mit seiner Hilfe lassen sich im Handumdrehen dynamische Websites erstellen.

Es gibt sie noch, die Wunderkinder. Eines von ihnen ist Aaron Swartz [1], der Programmierer des Python-Webtoolkits Web.py. Bereits mit 13 Jahren gewann er einen Preis der Webfirma Arsdigita, mit 14 arbeitete er am RSS-Standard mit. Heute ist er 20 Jahre alt und mit einer eigenen Startup-Firma bereits ein alter Hase im Webgeschäft.

Das Web zurückerobern

Als Teil der Web-2.0-Bewegung versucht Web.py das Internet mit Schlichtheit neu zu beleben. Wenn Ruby on Rails [2] die schlimmsten Auswüchse von J2EE und Ähnlichem eindämmt, dann verwandelt Web.py die Webentwicklung in ein wahres Kinderspiel. Denn damit lässt sich in weniger als 10 Sekunden eine dynamische Webseite erstellen. Mit Web.py hat Aaron Swartz ein überraschend leistungsfähiges und gleichzeitig einfaches Werkzeug entwickelt.

Derzeit liegt Web.py in Version 0.138 vor und ist gerade mal 74 KBytes groß, aber man sollte sich nicht von der Größe täuschen lassen. Beim Programmieren hat Swartz trickreiche Python-Techniken angewandt, zum Beispiel Metaprogrammierung: Web.py erzeugt bei Bedarf dynamisch Methoden und Klassen. Das Skript vereinfacht das Zusammenspiel zwischen Datenbanken und Website, ohne dass der Programmierer Verbindung und Abfrage von Hand programmieren muss.

All das realisiert Web.py über Klassen und Methoden, deren Namen so gewählt sind, dass sie möglichst kurz und damit leicht zu merken sind. Umfangreiche Dokumentation wird damit überflüssig. Die Projekt-Homepage selbst bezeichnet Web.py sogar als Anti-Framework.

Mitspieler

Web.py lässt sich von [3] herunterladen. Zwei weitere Python-Bibliotheken helfen ihm bei der Arbeit: Cheetah [4], um Templates zu erstellen, und Psycopg [5] für den Zugriff auf PostgreSQL-Datenbanken. Die relationale Datenbank PostgreSQL selbst darf natürlich nicht fehlen. Cheetah wie auch Psycopg sind optional, denn Web.py ist sehr modular aufgebaut. Deshalb arbeitet es auch mit anderen Templates-Systemen sowie anderen Datenbanken zusammen, zum Beispiel mit MySQL. Web.py lässt sich mit dem eingebauten Webserver betreiben, Tipps für den Einsatz mit Apache gibt der Kasten "Web.py und Apache".

Web.py und Apache

Zwar enthält das Skript Web.py einen eigenen Webserver. Wer aber bereits einen Apache-Server betreibt oder seine Site bei einem Provider hostet, wird Web.py wohl lieber in die bereits bestehende Umgebung integrieren. Die Web.py-Homepage empfiehlt für den Produktiveinsatz das heute fast vergessene FCGI und gibt Tipps zur Konfiguration.

Alternativ lässt sich Web.py auch mit dem SCGI-Modul [6] an Apache anbinden, das ähnlich wie FCGI arbeitet. Dabei läuft im Hintergrund ein Serverprozess, zu dem Apache als Client auftritt. Damit kann er Webskripte ausführen, ohne für jeden Request einen neuen Prozess zu starten.

Das SCGI-Paket enthält den Modul-Quellcode für Apache 1 und 2 sowie Python-Code für den SCGI-Server, den Web.py aber nicht verwendet. Zur Installation genügt es normalerweise, in das jeweilige Apache-Verzeichnis zu wechseln und »make« auszuführen. Unter Fedora Core 5 ist es nötig, im Makefile die Namen der Tools »apxs« und »apachectl« anzupassen - im Makefile steht in beiden Namen eine überflüssige 2. Bleibt nur noch die Apache-Konfiguration mit den folgenden Zeilen:

LoadModule scgi_module modules/mod_scgi.so
SCGIMount /webpy 127.0.0.1:4000


Web.py selbst greift für die SCGI-Anbindung auf die Flup-Bibliothek [7] zurück, die deshalb installiert sein muss. Mit der passenden Startoption läuft Web.py dann im Servermodus: »python web.py scgi«.

Diesen Artikel als PDF kaufen

Als digitales Abo

Als PDF im Abo bestellen

comments powered by Disqus

Ausgabe 07/2013

Preis € 6,40

Insecurity Bulletin

Insecurity Bulletin

Im Insecurity Bulletin widmet sich Mark Vogelsberger aktuellen Sicherheitslücken sowie Hintergründen und Security-Grundlagen. mehr...

Linux-Magazin auf Facebook