mod_python, CGI, Framworks und Co.

Sockets, TCP/IP, (XML-)RPC und ähnliche Themen gehören in dieses Forum
Antworten
Benutzeravatar
Sr4l
User
Beiträge: 1091
Registriert: Donnerstag 28. Dezember 2006, 20:02
Wohnort: Kassel
Kontaktdaten:

Dienstag 1. Mai 2007, 10:36

Ich lese immer nur "kein mod_python". Zuviele Nachteile... usw. Aber ich lese auch auch immer bei mod_python schneller als CGI (nagut das ist keine Kunst).

Ist der CGI Handler von mod_python schneller oder genauso schnell wie FastCGI? http://modpython.org/live/current/doc-h ... mance.html

Ist mod_python eine der schnellsten und ressourcen sparensten Möglichkeiten Python ins Web zubringen?
Oder macht das Karrigell oder eins der WSGI Framworks besser?
Leonidas
Administrator
Beiträge: 16024
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Dienstag 1. Mai 2007, 12:24

Sr4l hat geschrieben:Ist mod_python eine der schnellsten und ressourcen sparensten Möglichkeiten Python ins Web zubringen?
FastCGI ist Resourcensparender, da nicht jeder Webserverprozess (mit MPM Prefork zum Beispiel) den Python-Interpreter geladen haben muss.
Was die Performance angeht, kann man das nicht so pauschalisieren, denn es gibt mod_python vs. mod_fastcgi, mod_fcgid, Lightttpds FastCGI, Nginxs FastCGI etc. etc.

Aber ok, mod_python kann man keinesfalls langsam nennen. Nur sind andere Anbindungen ebenso schnell, haben aber weniger Nachteile.
My god, it's full of CARs! | Leonidasvoice vs Modvoice
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5554
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Telfs (Tirol)
Kontaktdaten:

Dienstag 1. Mai 2007, 12:37

Sr4l hat geschrieben:Zuviele Nachteile... usw.
Hi Sr4l!

Ich habe mir "mod_python" vor ein paar Jahren angesehen. Gleich nachdem ich mit Python begonnen habe. Damals war einer der wichtigsten Nachteile, dass man nach jeder Änderung am Code den Apachen neu starten musste. Kein Provider lässt das zu. Dann war es fast so umständlich zu programmieren, wie derzeit die meisten WSGI-Frameworks. Keine Ähnlichkeit mit der Einfachheit von CGI. Dann schaffte ich es ziemlich oft, den Apachen mit einem fehlerhaften Skript zum Abstürzen zu bewegen. Das Problem, so wie ich es mitbekommen habe ist oder war, dass die Python-Skripte zu nahe am Apachen ausgeführt werden.

Von ``mod_python.publisher`` hatte ich damals gar nichts mitbekommen. Dieser Publisher scheint die Programmierung mit ``mod_python`` fast so einfach wie mit CGI zu machen. --> http://modpython.org/live/current/doc-html/tut-pub.html

Code: Alles auswählen

  AddHandler mod_python .py
  PythonHandler mod_python.publisher
  PythonDebug On
Gibt es so etwas einfaches auch für WSGI?

Ich werde mich in ein paar freien Stunden wieder durch das mod_python-Tutorial durcharbeiten, damit ich wieder auf dem aktuellen Stand bin. Mal sehen, ob ich mod_python dazu überreden kann, TAL-Dateien und METAL-Dateien zu rendern und unkompliziert auszuliefern. Vielleicht hat sich ja wirklich einiges gebessert. Vielleicht schaffe ich es aber auch immer noch, den Apachen mit fehlerhaften Skripten abzuwürgen oder zu unvorhersehbaren Aktionen zu bewegen... Wer weiß.

lg
Gerold
:-)
[url]http://halvar.at[/url] | [url=http://halvar.at/elektronik/kleiner_bascom_avr_kurs/]Kleiner Bascom AVR Kurs[/url]
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Leonidas
Administrator
Beiträge: 16024
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Dienstag 1. Mai 2007, 12:40

gerold hat geschrieben:Vielleicht schaffe ich es aber auch immer noch, den Apachen mit fehlerhaften Skripten abzuwürgen oder zu unvorhersehbaren Aktionen zu bewegen... Wer weiß.
Das vielleicht nicht, aber neustarten wirst du den Apachen immer noch müssen. Das ist so durch die Struktur von mod_python und des Python-Interpreters bedingt.

Und der weil habe ich noch eine mod_wsgi Anleitung gefunden. Auch die Benchmaks am Schluss sind interessant, wenn man bedenkt, dass mod_wsgi noch nichteinmal richtig released ist und mod_python seit Jahren existiert.
My god, it's full of CARs! | Leonidasvoice vs Modvoice
Benutzeravatar
Sr4l
User
Beiträge: 1091
Registriert: Donnerstag 28. Dezember 2006, 20:02
Wohnort: Kassel
Kontaktdaten:

Dienstag 1. Mai 2007, 13:10

Den Apache neuzustarten ist kein Problem einfach immer eine Konsole dafür offen lassen. Bzw. unter windows ist der Apachemonitor eine schneller Weg.

Den modpython.publisher finde ich sehr gut. mit den PSP Handler (Python wie PHP coden) habe ich mir angeschaut aber gibt mir nichts.

UNd wie gesagt Apache neustarten stört mich nicht ich lade nur fertiges hoch. Und lokal starte ich sehr schnell neu. Das ich mit modpython an apache hänge stört mich auch nicht. Und ich finde es nicht unkompleziert besonders das ansprechen vom Input ist sehr geil:

http://localhost/index.py/news?list=5

Code: Alles auswählen

.
..
def news(req,list=0):
    req.content("text/html") # oder so ähnlich, habe keine lust zu gucken ;-)
    #durch list im def ist nun die variable vorhanden
    #nun mache ich was ich will und wenn ich fertig bin
    #mache ich return "HTMLsource"
    #oder ich nutze req.write("HTMLsource")
    # das ist 1. conform zum schnelleren modpython.handler
    # und es ermöglicht das zwischen durch ausgeben
    # bevor ich fertig gerendert habe.
    req.write("You choose list=<b>%s</b>"%(list))
    #return apache.OK
    #würde ich die zeile auskomenteieren hierrüber
    #wäre das script handler conform
Leonidas
Administrator
Beiträge: 16024
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Dienstag 1. Mai 2007, 13:17

Sr4l hat geschrieben:Den Apache neuzustarten ist kein Problem einfach immer eine Konsole dafür offen lassen.
gerold hat geschrieben:Damals war einer der wichtigsten Nachteile, dass man nach jeder Änderung am Code den Apachen neu starten musste. Kein Provider lässt das zu.
My god, it's full of CARs! | Leonidasvoice vs Modvoice
Benutzeravatar
Sr4l
User
Beiträge: 1091
Registriert: Donnerstag 28. Dezember 2006, 20:02
Wohnort: Kassel
Kontaktdaten:

Dienstag 1. Mai 2007, 17:31

Auf Servern hat man selber alles in der Hand.
Und nen Sharedhoster der mod_python anbietet muss auch nen
neustart anbieten sonst würde es ja nicht gehen.
Leonidas
Administrator
Beiträge: 16024
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Dienstag 1. Mai 2007, 17:35

Sr4l hat geschrieben:Und nen Sharedhoster der mod_python anbietet muss auch nen
neustart anbieten sonst würde es ja nicht gehen.
Hmm und welcher Hoster in Deutschland tut das? jens hat unter [wiki]Python Webspace[/wiki] keinen einzigen gefunden.
Hätte ich aber als Hoster auch nicht gerne, wenn jemand dauernd den Apachen neustartet. FastCGI ist da unproblematischer: man muss nur die FastCGI-Server-Datei "touchen" und die FastCGI-Server werden neugestartet. Der HTTPd bleibt davon unberührt.

Edit: Es ist ja so, dass die Worker-Prozesser vom Apachen nach einer bestimmen Anzahl Hits bzw. einer bestimmten Zeit automatisch neustarten. Dann werden die Änderungen übernommen.
My god, it's full of CARs! | Leonidasvoice vs Modvoice
Antworten