Zum Inhalt springen

mod_python

aus Wikipedia, der freien Enzyklopädie
Dies ist eine alte Version dieser Seite, zuletzt bearbeitet am 7. April 2008 um 18:30 Uhr durch 84.164.97.11 (Diskussion). Sie kann sich erheblich von der aktuellen Version unterscheiden.

mod_python ist ein Modul für den Apache-HTTP-Server, das die Programmiersprache Python in den Webserver einbindet. Ziel war die Ablösung des „Common Gateway Interface“ (CGI) zur Ausführung von Python-Skripten. Heutzutage sollte man es nicht mehr verwenden, da moderne und leistungsfähige Frameworks wie Pylons, Django oder Werkzeug zur Verfügung stehen, die auf WSGI bzw. FastCGI aufsetzen und nicht die Nachteile von mod_python mit sich bringen.

Vorteile

Bei gewöhnlichen CGI-Programmen wird für jede Anfrage ein neuer Prozess auf dem Server gestartet. Dieses Verfahren funktioniert gut auf Seiten mit mäßigem Besucherandrang; auf Seiten mit hohem Besucherandrang skaliert dieses Verfahren zu schlecht. Es gibt zwar Methoden, um CGI zu beschleunigen, wie „FastCGI“, aber oft ist es einfacher, ein spezielles Modul zur Einbettung einer Sprache in den Webserver zu verwenden. Genau dafür wurde „mod_python“ entwickelt. Da der Prozess nach der Bearbeitung einer Anfrage nicht beendet wird, können persistente Daten, wie z. B. Datenbankverbindungen, gespeichert werden, und die Verzögerung durch das Starten eines neuen Prozesses entfällt. Auf diese Weise kann Overhead bei der Ausführung vermieden werden.

Da „mod_python“-Module direkt in den Webserver integriert sind, können sie praktisch alles erledigen, was sonst in C programmierte Apache-Module erledigen: Implementierung von anderen Protokollen als HTTP, Filterung der Anfrage und der Antwort, Ermittlung des Datenformats usw.

Nachteile

Da die Skripte direkt im Server laufen, werden sie normalerweise mit den Rechten des Serverprozesses ausgeführt. Normalerweise ist das kein Problem, aber bei unvorsichtigem Umgang können Module wie „mod_python“ zu Sicherheitslücken führen. Dieses Problem betrifft alle Programmiersprachen, die direkt in den Webserver eingebettet werden und ist nicht Python-spezifisch. Dieses Problem kann umgangen werden, indem man mittels suEXEC den ausführenden Benutzer wechselt. Skripte unter mod_python verhalten sich oft nicht so, wie erwartet. mod_python ist insbesondere nicht mit mit mod_php zu vergleichen. So wird kein Python-Code in HTML eingebettet, sondern es werden spezielle Python-Skripte ausgeführt. Zudem weisen unter mod_python laufende Python-Skripte ein manchmal abweichendes Verhalten von nicht innerhalb von mod_python laufenden Programmen auf. Eine weitere Konsequenz ist, dass der Python-Interpreter, ähnlich wie bei mod_php in jedem Prozess einzeln gestartet wird, was insbesondere bei mehreren Apache-Prozessen dazu führt dass unnötige Interpreter laufen und damit unnötigen Overhead produzieren und die Gesamtgeschwindigkeit verringern.

Die Lowlevel-Programmierung mittels CGI oder mod_python ist fehleranfällig, wenig intuitiv und inzwischen nicht mehr auf der Höhe der Zeit. Statt auf diese Methoden Python-Code auszuführen ist es empfehlenswerter, eines der Web-Frameworks wie z.B. Pylons, Django oder Werkzeug zurückzugreifen. Dies gilt insbesondere, um der Vermischung von Präsentations- und Programmlogik vorzubeugen.

Geschichte

Die erste Version von „mod_python“ wurde im Jahr 2000 von Gregory Trubetskoy freigegeben. Seit 2002 ist „mod_python“ ein offizielles Projekt der Apache Software Foundation.