Session timeout mit Karrigell und BeautifulSoup

Sockets, TCP/IP, (XML-)RPC und ähnliche Themen gehören in dieses Forum
Antworten
Benutzeravatar
nkoehring
User
Beiträge: 543
Registriert: Mittwoch 7. Februar 2007, 17:37
Wohnort: naehe Halle/Saale
Kontaktdaten:

Hallo mal wieder...

ich wuerde gern ein vernuenftiges Sessionmanagement haben und somit auch ein timeout. Die Session()-Klasse von Karrigell reicht mir sogesehen vollkommen, da ich ja einfach als Attribut einen Zeitstempel anhaengen kann, bei dem ich dann ueberpruefe wie alt er ist und wenn er das Maximalalter nicht ueberschritten hat, erneuere ich ihn.

Mein Problem ist aber, dass ich das gern von einer Funktion (_check_session_timeout) machen lassen wuerde die "privat" (mit Unterstrich am Anfang des Namens) ist, also von außen nicht aufrufbar. Diese private Funktion wird von der Funktion aufgerufen (_create_content), die mir den HTML-Baum in BeautifulSoup generiert. Und nun wirklich zu meinem Problem: Da diese Funktion auch Privat ist, funktioniert die Weiterleitung per raise HTTP_REDIRECTION, "index" nicht. Diese funktioniert nur, wenn ich _check_session_timeout direkt von "normalen" Funktion (zB index) aufrufe.

Oh je, ich hoffe, dass war jetzt verstaendlich ^^

Woran koennte das liegen... und kann man das aendern?

EDIT: Der Aufruf, der zum Logout vorgesehenen Funktion funktioniert uebrigens auch nicht... was mich stark wundert. Andere Funktionen, die nur den HTML-Baum veraendern, an der gleichen Stelle aufgerufen werden und auch privat sind, funktionieren aber.
[url=http://www.python-forum.de/post-86552.html]~ Wahnsinn ist auch nur eine andere Form der Intelligenz ~[/url]
hackerkey://v4sw6CYUShw5pr7Uck3ma3/4u7LNw2/3TXGm5l6+GSOarch/i2e6+t2b9GOen7g5RAPa2XsMr2
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

nkoehring hat geschrieben:ich wuerde gern ein vernuenftiges Sessionmanagement haben und somit auch ein timeout. Die Session()-Klasse von Karrigell reicht mir sogesehen vollkommen, da ich ja einfach als Attribut einen Zeitstempel anhaengen kann, bei dem ich dann ueberpruefe wie alt er ist und wenn er das Maximalalter nicht ueberschritten hat, erneuere ich ihn.
Hi nkoehring!

Die Sessionverwaltung in Karrigell geht den Weg, dass sie schlicht und einfach die letzten 1000 Sessiondaten behält. Die Session-Cookies sind so gesetzt, dass diese beim Schließen des Browsers gelöscht werden.

Du kannst in der karrigell.ini einstellen, ob die Session-Daten auch nach einem Neustart von Karrigell noch vorhanden sind, indem du die Einstellung "persistentSession" auf "1" setzt. Dann werden die Sessiondaten nicht mehr in einem Dictionary, sondern in einem Shelve verwaltet.

Wenn du möchtest, dass mehr Sessiondaten verwaltet werden, dann kannst du in der Datei core/k_session.py den Wert der Variable "maxSessions" erhöhen.

So lange also dein Browser offen ist, wirst du bei deinen Tests immer auf die gleichen Sessiondaten zugreifen können. Außer du verwendest den Internet Explorer -- der machte schon immer Schwierigkeiten mit Session-Cookies die einfach so, ohne Grund verloren werden.

mfg
Gerold
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Benutzeravatar
nkoehring
User
Beiträge: 543
Registriert: Mittwoch 7. Februar 2007, 17:37
Wohnort: naehe Halle/Saale
Kontaktdaten:

Hmm... naja, bisher habe ich es so geloest, dass die Funktion einfach True oder False zurueck gibt, und die _create_content() einfach den Logout ankurbelt.
Ich muss mir die INI Gelegenheit nochmal genauer anschauen. Aber bisher stuetzte sich meine Aufmerksamkeit dem Projekt selber :oops:
[url=http://www.python-forum.de/post-86552.html]~ Wahnsinn ist auch nur eine andere Form der Intelligenz ~[/url]
hackerkey://v4sw6CYUShw5pr7Uck3ma3/4u7LNw2/3TXGm5l6+GSOarch/i2e6+t2b9GOen7g5RAPa2XsMr2
Antworten