wsgi: initialisierung der applikation "merken"

Sockets, TCP/IP, (XML-)RPC und ähnliche Themen gehören in dieses Forum
Antworten
Benutzeravatar
keppla
User
Beiträge: 483
Registriert: Montag 31. Oktober 2005, 00:12

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?
Y0Gi
User
Beiträge: 1454
Registriert: Freitag 22. September 2006, 23:05
Wohnort: ja

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.
Benutzeravatar
keppla
User
Beiträge: 483
Registriert: Montag 31. Oktober 2005, 00:12

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!
Y0Gi
User
Beiträge: 1454
Registriert: Freitag 22. September 2006, 23:05
Wohnort: ja

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.
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

@keppla: Suchst du vielleicht ein Session-Managment? Also die Möglichkeiten Werte an User zu koppeln und das von einem Request zum nächsten?

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Benutzeravatar
keppla
User
Beiträge: 483
Registriert: Montag 31. Oktober 2005, 00:12

@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.
Benutzeravatar
birkenfeld
Python-Forum Veteran
Beiträge: 1603
Registriert: Montag 20. März 2006, 15:29
Wohnort: Die aufstrebende Universitätsstadt bei München

Ja, das ist kein Problem, falls du mod_python, FastCGI oder scgi verwendest.
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

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.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Benutzeravatar
keppla
User
Beiträge: 483
Registriert: Montag 31. Oktober 2005, 00:12

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.
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

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.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Benutzeravatar
keppla
User
Beiträge: 483
Registriert: Montag 31. Oktober 2005, 00:12

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)
Antworten