Mit hilfe des Python Frameworks Pylons (Session Klasse) verwaltet mein Script die Sessions der User. Nun würde ich aber gerne sehen welche User eingeloggt sind und wie viele aktive Sessions zu einem User existieren.
Hat jemand eine idee wie ich an die Informationen der aktiven Session kommen kann?
Auf die Beantwortung dieser Frage war ein Kopfgeld in Höhe von 50 Reputationspunkten ausgesetzt.
Das Kopfgeld wurde bereits vergeben.
1 Antwort
4
Pylons nutzt Beaker zur Session-Verwaltung. Du kannst ein Verzeichnis angeben, in dem die Session-Daten gesichert werden sollen. Dies kannst Du dann wiederum auslesen und so auf 'fremde' Sessions zugreifen.
Ob Beaker von Haus aus so etwas anbietet kann ich leider nicht sagen ;)
Vielen Dank! Das Verzeichnis nutze ich schon nur leider sind dort alle Sessions in verschiedenen Ordnern etc gespeichert. Hast du eine Idee wie ich daraus eine Liste erzeugen kann?
Soweit ich weiss hast Du doch einen kompletten Python Interpreter zur Verfügung, also sollteein os.walk funktionieren: http://docs.python.org/library/os.html#os.walk
Pro Session wird eine Datei angelegt und in einen anderen Unterordner(..\sessions\container_file\3\33\) gespeichert. In der untersten Ebene befinden sich Dateien wie 333csad7a35028edc1er3886f80f6473.cache welche aber auf Grund des Alters nicht auf aktive Sessions schließen lassen.
Vielen Dank für deine Hilfe. Es Funktioniert jetzt halb. Anhand des Timestamps kann ich die letzte Aktivität des Users rauslesen. Im Cache File selber finde ich den Usernamen und die Loginzeit. Das Problem sind nun aber die Totensessions. Läuft eine Session auf einen Timeout oder der Anwender schließt seinen Browser ist die Session noch weiter im Cache und somit bei mir auch als aktiv angezeigt. Somit kann es sein das eine Session bei mir als "aktiv" angezeigt wird obwohl diese gar nicht mehr benutzt werden kann.
Grundsätzlich muss ein Cleanup stattfinden...ich meine gelesen zu haben, dass Beaker den Cache nicht von sich aus aufräumt, aber ich kann mich irren. Wie lange eine Session valid ist kannst Du hiermit bestimmen http://pylonshq.com/docs/en/0.9.7/sessions/#timeout Denselben Wert würde ich als max-age für den Timestamp der session files verwenden. 100%ige online detection geht über sessions eh nicht, dazu müsstest Du AJAX und onclose events bemühen.
Die Bereinigung des Session Verzeichnisses lässt sich einfach über die Konsole erledigen. Einfach in das Session Verzeichnis wechseln und folgenden Befehl ausführen.