Seite 1 von 1

wsgi: initialisierung der applikation "merken"

Verfasst: Dienstag 17. Oktober 2006, 13:54
von keppla
Hallo Forum!

Gibt es eine Möglichkeit, die Initialisierung einer WSGI-Anwendung zwischen zwei aufrufen zu behalten? Bzw, wahrscheinlicher (da WSGI das nicht herzugeben scheint) gibt es da vielleicht einen komplett anderen Ansatz, neben WSGI?

Verfasst: Dienstag 17. Oktober 2006, 14:25
von Y0Gi
WSGI sieht die beiden Umgebungsvariablen wsgi.multithread und wsgi.multiprocess vor (s. auch [wiki]Das WSGI Protokoll).[/wiki]Es ist also möglich, Anwendungen nur einmal zu starten und dann die Requests davon bearbeiten zu lassen. Das funktioniert allerdings je nach verwendetem Prinzip nicht immer, etwa mit CGI, worüber für jeden Request die ganze Anwendung neu gestartet wird.

Verfasst: Dienstag 17. Oktober 2006, 15:08
von keppla
WSGI sieht die beiden Umgebungsvariablen wsgi.multithread und wsgi.multiprocess
COOL! ich glaube, genau das brauchte ich.
Das funktioniert allerdings je nach verwendetem Prinzip nicht immer, etwa mit CGI, worüber für jeden Request die ganze Anwendung neu gestartet wird.
Deshalb meine Frage nach einem anderen ansatz, da ich was ähnliches gedacht hatte (CGI kann das nicht, WSGI kann CGI, also kann WSGI das nicht, verkürzt gesagt).

Danke!

Verfasst: Dienstag 17. Oktober 2006, 15:15
von Y0Gi
WSGI kann das schon, aber eben nicht mit CGI. Mit einem Standalone-Server, vermutlich mod_python und anderen Servern sollte das aber möglich und auch so gedacht sein.

Nachtrag: wsgi.run_once nicht zu vergessen.

Verfasst: Mittwoch 18. Oktober 2006, 10:27
von jens
@keppla: Suchst du vielleicht ein Session-Managment? Also die Möglichkeiten Werte an User zu koppeln und das von einem Request zum nächsten?

Verfasst: Freitag 20. Oktober 2006, 07:05
von keppla
@keppla: Suchst du vielleicht ein Session-Managment? Also die Möglichkeiten Werte an User zu koppeln und das von einem Request zum nächsten?
Nein, nicht direkt. Ich will eine ZODB nutzen, und möchte sie nicht bei jedem Seitenaufruf neu initialisieren.

Verfasst: Freitag 20. Oktober 2006, 07:29
von birkenfeld
Ja, das ist kein Problem, falls du mod_python, FastCGI oder scgi verwendest.

Verfasst: Freitag 20. Oktober 2006, 08:04
von Leonidas
birkenfeld hat geschrieben:Ja, das ist kein Problem, falls du mod_python, FastCGI oder scgi verwendest.
Oder einen standalone WSGI-Server wie den von Paste oder von CherryPy verwendest.

re

Verfasst: Freitag 20. Oktober 2006, 13:41
von keppla
das ist kein Problem, falls du mod_python, FastCGI oder scgi verwendest.
Sobald ich rausbekommen habe, wie ich das tue, wollte ich fastcgi oder mod_python mit einem apache nutzen (dedicated server, den ich mir mit anderen Teile, welche den Apache brauchen, deshalb würde ich mich da gerne einreihen).
Danke für die Antworten.

Re: re

Verfasst: Sonntag 22. Oktober 2006, 13:39
von Leonidas
keppla hat geschrieben:Sobald ich rausbekommen habe, wie ich das tue, wollte ich fastcgi oder mod_python mit einem apache nutzen (dedicated server, den ich mir mit anderen Teile, welche den Apache brauchen, deshalb würde ich mich da gerne einreihen).
Django and FastCGI zeigt es grob auf. Du konfigurierst in deinem FastCGI-fähigem Webserver seine .fcgi-Dateie, die gestartet wird. DIese ist ein FastCGI-Server, der über flup eine WSGI-App (in diesem Fall Django) wrappt.

Wie du es nun einbindest hängt nun ab, ob du ein Framework verwendest, oder pures WSGI.. aber flup brauchst du auf jeden Fall, da es die nötigen FastCGI-Server mitbringt.

Verfasst: Montag 23. Oktober 2006, 13:05
von keppla
Danke für die Erklärung, ich hätte mal früher reinschauen sollen.
Ich hatte das Konzept von Wrappern noch nicht so ganz verstanden.
In der Zwischenzeit bin ich auf mod_python/paste umgestiegen, weil mod_python schon läuft (ich hasse administration;) ), und paste ziemlich nach dem Minimum aussieht, was ich gerne hätte (sessions, request- und responseobjekte, urldispatcher will ich mir selber machen).
Allerdings glaube ich, brauch ich da kein flup, ein wrapper scheint in paste mit paste.modpython inklusive zu sein, ein "hello world" hab ich schon hinbekommen)