mod_python, wo anfangen?

Sockets, TCP/IP, (XML-)RPC und ähnliche Themen gehören in dieses Forum
Antworten
ToD
User
Beiträge: 7
Registriert: Freitag 12. November 2004, 19:07

Hallo,
ich habe soeben erfolglos versucht, ein kleines Script unter mod_python zum laufen zu bringen. Nachdem die CGI-Variante aus meinem Lehrbuch nicht geklappt hat, habe ich mir die Beispiele im xampp-Verzeichnis einmal genauer angesehen und dort sowas gefunden:

Code: Alles auswählen

from mod_python import apache
def handler(req):
        req.content_type = "text/html"
        req.write("<html><head><link href=\"../styles.css\" rel=\"stylesheet\" type=\"text/css\"></head><body>")
	req.write(" <p><h1>Python is running with mod_python ...</h1>")
	req.write("<b>... that is all ...</b><br><br><br>")
        return apache.OK
Für mich sieht das so aus, als sei diese Funktion handler sowas ie die main-Funktion in Java, also der Entry-Point meines Programmes unter mod_python. Nichtsdestotrotz ist mir nicht klar, was zum Beispiel req für ein Objekt ist und was für Aufgaben es hat. Vor allem: Obiger Code funktioniert bei mir, folgender, abgeändeter Code aber nicht:

Code: Alles auswählen

from mod_python import apache
import os
def handler(req):
        req.content_type = "text/html"
        req.write(os.environ)
        return apache.OK
Kann mir das jemand erklären?

mpG
Tobias
Sorgenkind
User
Beiträge: 34
Registriert: Samstag 24. Juli 2004, 19:25
Kontaktdaten:

req steht für request. es repräsentiert eine anfrage eines clients.

dann zu deinem unteren beispiel...
os.environ hat eigentlich keine bedeutung bei mod_python im gegensatz zu cgi.

alle infos was man braucht bietet das request objekt.

und req.write() mag eigentlich keine dicts nur strings

mit einem handler modul anzufangen ist eh schlecht. versuchs lieber mal mit dem publisher handler

genaueres steht natürlich in der dokumentation http://www.modpython.org/live/current/doc-html/
gerade zum request objekt
RainBowBender
User
Beiträge: 53
Registriert: Dienstag 6. April 2004, 10:33

Für die CGI Variante aus dem Lehrbuch brauchst du kein mod_python.

Meine Erfahrungen mit mod_python sind eher schlecht, auch wenn cGI hässlich ist, fährt man damit imho besser als mit mod_python, wenn man Skripte schreibt, die sich über mehr als eine Datei verteilen.
Sorgenkind
User
Beiträge: 34
Registriert: Samstag 24. Juli 2004, 19:25
Kontaktdaten:

mod_python besitzt einen cgi handler der sich genauso wie eine cgi umgebung verhält aber alle vorteile von mod_python mitbringt wenn dir das so gut gefällt...

gerade für mehrere dateien finde ich durchs schreiben eigener handler module mod_python viel besser als cgi
RainBowBender
User
Beiträge: 53
Registriert: Dienstag 6. April 2004, 10:33

Sorgenkind hat geschrieben:mod_python besitzt einen cgi handler der sich genauso wie eine cgi umgebung verhält aber alle vorteile von mod_python mitbringt wenn dir das so gut gefällt...

gerade für mehrere dateien finde ich durchs schreiben eigener handler module mod_python viel besser als cgi
Nur wenn du mehrere module schreibst und diese einbindest, testest, und nochmals veränderst hast du mit mod_python probleme, da mod_python nicht immer die module neu läd.
Sorgenkind
User
Beiträge: 34
Registriert: Samstag 24. Juli 2004, 19:25
Kontaktdaten:

By default, mod_python checks the time-stamp of the file and reloads the module if the module's file modification date is later than the last import or reload. This way changed modules get automatically reimported, eliminating the need to restart the server for every change.
außer du machst PythonAutoReload 0 was man eigentlich auch machen sollte wenn man nicht viel am script mehr ändert

außerdem... wie oft ändert man denn was an den dateien? sicher stört es einen dann den server neu zu starten aber wie oft macht man das effektiv im verhältnis zur laufzeit?

und eigene module importiert man auch mit apache.import_module("modul",autoreload=1) zb...
dann haste das verhalten was du gerade kritisiert hast auch nicht
Antworten