Open Source im professionellen Einsatz
Linux-Magazin 08/2006

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.

540

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«.

Linux-Magazin kaufen

Einzelne Ausgabe
 
Abonnements
 
TABLET & SMARTPHONE APPS
Bald erhältlich
Get it on Google Play

Deutschland

Ähnliche Artikel

  • Tornado: Facebook macht Python-Framework Open Source

    Das Web-Unternehmen Facebook hat Tornado, ein Python-Framework für Webanwendungen, unter der Apache Licence 2.0 freigegeben.

  • SLAMPP 2.0: Live-System mit PHP, Python und Rails

    Die Live-Distribution SLAMPP ist in Version 2.0 verfügbar. Das Linux-System enthält unter anderem Apache, MySQL, PHP und Perl (LAMPP).

  • Flask

    Dank des Python-basierten Microframework Flask, dessen Name sich mit Flachmann übersetzen lässt, steuern die Nutzer im lokalen Netzwerk einen Raspberry Pi über ein Webinterface.

  • Programme von Welt

    Ein Programm nachträglich für mehrere Landessprachen umzubauen erfordert hohen Aufwand. Besser ist es, von Anfang an im Sourcecode die nötigen Vorkehrungen für mehrsprachige Strings zu schaffen. Das Gettext-System bietet dafür die passende Infrastruktur.

  • Dancer: Perl-Framework für Webanwendungen

    Dancer ist ein Perl-Framework mit eingebautem Webserver, mit dem sich einfache Webanwendungen und Web Services in wenigen Zeilen schreiben lassen. Mit Version 1.000 ist nun die erste stabile Release der Software verfügbar.

comments powered by Disqus

Ausgabe 01/2017

Digitale Ausgabe: Preis € 6,40
(inkl. 19% MwSt.)

Artikelserien und interessante Workshops aus dem Magazin können Sie hier als Bundle erwerben.