Hallo, irgendwie stehe ich wohl auf dem Schlauch. Bislang benutze ich Python + CGI für ein paar (simpele) Web-Anwendungen. Funktioniert alles prima (und das seit Jahren). Nun würde ich gerne für ein neues Projekt FastCGI ausprobieren (am besten mit einem bestehenden CGI-Skript), um zu sehen, ob das wirklich einen Geschwindigkeitsvorteil bringt. Aber ich weiss nicht, wo ich anfangen soll... Muss ich ein neues Modul / neue Module intallieren? Welche? Muss ich an den Scripts was ändern? Was? Ich brauch mit anderen Worten ein kurzes HowTo für Dummies... Schöne Grüße, Matthias
--On 30. September 2007 15:14:21 +0200 Matthias Huening <mhuening@zedat.fu-berlin.de> wrote:
Hallo,
irgendwie stehe ich wohl auf dem Schlauch. Bislang benutze ich Python + CGI für ein paar (simpele) Web-Anwendungen. Funktioniert alles prima (und das seit Jahren). Nun würde ich gerne für ein neues Projekt FastCGI ausprobieren (am besten mit einem bestehenden CGI-Skript), um zu sehen, ob das wirklich einen Geschwindigkeitsvorteil bringt. Aber ich weiss nicht, wo ich anfangen soll...
Schau Dir lieber Apache + mod_python an.... -aj
Andreas Jung schrieb:
Schau Dir lieber Apache + mod_python an....
Warum? FastCGI bietet in etwa die Geschwindigkeit von mod_python, ist nicht auf Apache angewiesen und zusammen mit suexec sind die Skripte der verschiedenen Nutzer auch gut voneinander isoliert. FastCGI ist aus meiner Sicht der richtige Weg, mod_* ist imho nur für Anwendungsfälle zu gebrauchen, wo ein einziger Nutzer einen Server exklusiv nutzt. Zum Originalthema: Wenn man WSGI-konform programmiert, kann man als Nebeneffekt relativ fix zwischen CGI und FastCGI wechseln. Dies vielleicht nur als Recherchetipp. fs
Felix Schwarz (30.09.2007 15:42):
Andreas Jung schrieb:
Schau Dir lieber Apache + mod_python an....
Warum?
Ja, das wollte ich auch gerade fragen... Warum? Meine CGI-Skripts laufen wie gesagt seit Jahren völlig problemlos. Daher suche ich nach einer Lösung, die im idealen Fall eine 1-zu-1-Übernahme der bestehenden Skripts ermöglicht. Aber wie gesagt: bisher kenne ich weder FastCGI noch mod_python. Ich suche daher zunächst nach Anhaltspunkten und möglichst simpelen und konkreten Anleitungen. Matthias
Muss ich ein neues Modul / neue Module intallieren? Welche?
Ich benutze fcgi.py; es gibt aber auch ein paar Konkurrenzprodukte.
Muss ich an den Scripts was ändern? Was?
Alles. Ein FCGI-Server hat eine Endlosschleife, in der er 1. einen neuen Request per accept auf einem Socket annimmt 2. auf diesem Socket alle "CGI"-Daten einliest (also Umgebungsvariablen und Standardeingabe) 3. auf diesem Socket ebenfalls alle Ergebnisse schreibt (und zwar sowohl stdout als auch stderr). Der FCGI-Socket hat ein eigenes Protokoll, um die verschiedenen Datenblöcke zu unterscheiden (Umgebungsvariable, stdin, stdout, stderr). Kurz: es hat mit CGI eigentlich nichts mehr zu tun. Eigentlich könntest Du auch einen "reverse proxy" aufsetzen; der einzige Vorteil an FastCGI, den ich sehe, ist, dass mod_fcgi automatisch den FastCGI-Server startet, wenn man das möchte. (Außerdem ist es geringfügig einfacher, eine CGI-Anwendung zu portieren, da man ihr die Illusion von Umgebungsvariablen, stdin und stdout vermitteln kann). Ciao, Martin
Hallo Martin, vielen Dank für die erhellende Erklärung.
Kurz: es hat mit CGI eigentlich nichts mehr zu tun.
Da habe ich also offensichtlich einiges gar nicht bzw. völlig falsch verstanden. Ich werde noch mal neu nachdenken.
Eigentlich könntest Du auch einen "reverse proxy" aufsetzen;
Werde ich mir ansehen. Vielen Dank & schöne Grüße, Matthias
participants (4)
-
"Martin v. Löwis"
-
Andreas Jung
-
Felix Schwarz
-
Matthias Huening