[rhmessaging-commits] rhmessaging commits: r3043 - mgmt/trunk/cumin/python/cumin.
rhmessaging-commits at lists.jboss.org
rhmessaging-commits at lists.jboss.org
Wed Jan 14 17:46:59 EST 2009
Author: justi9
Date: 2009-01-14 17:46:59 -0500 (Wed, 14 Jan 2009)
New Revision: 3043
Modified:
mgmt/trunk/cumin/python/cumin/__init__.py
mgmt/trunk/cumin/python/cumin/user.py
Log:
Implement user session expiration
Modified: mgmt/trunk/cumin/python/cumin/__init__.py
===================================================================
--- mgmt/trunk/cumin/python/cumin/__init__.py 2009-01-14 22:01:54 UTC (rev 3042)
+++ mgmt/trunk/cumin/python/cumin/__init__.py 2009-01-14 22:46:59 UTC (rev 3043)
@@ -17,7 +17,7 @@
from page import MainPage
from stat import StatChartPage
from action import ActionPage
-from user import LoginPage, UserSession
+from user import LoginPage, UserSession, UserSessionExpireThread
from datetime import timedelta
from qpid.util import URL
@@ -71,6 +71,7 @@
self.unprotected_pages = unprotected
self.user_sessions_by_id = dict()
+ self.user_session_expire_thread = UserSessionExpireThread(self)
def check(self):
if not os.path.isdir(self.home):
@@ -85,6 +86,7 @@
def start(self):
self.model.start()
+ self.user_session_expire_thread.start()
def stop(self):
self.model.stop()
Modified: mgmt/trunk/cumin/python/cumin/user.py
===================================================================
--- mgmt/trunk/cumin/python/cumin/user.py 2009-01-14 22:01:54 UTC (rev 3042)
+++ mgmt/trunk/cumin/python/cumin/user.py 2009-01-14 22:46:59 UTC (rev 3043)
@@ -4,7 +4,7 @@
from time import sleep
from threading import Thread, Event
from random import randint
-from datetime import datetime
+from datetime import datetime, timedelta
from crypt import crypt
from qpid.datatypes import uuid4
@@ -29,9 +29,29 @@
def delete(self):
del self.app.user_sessions_by_id[self.id]
-class UserSessionDeleteThread(Thread):
- pass # every minute cycle through and delete expired sessions
+class UserSessionExpireThread(Thread):
+ def __init__(self, app):
+ super(UserSessionExpireThread, self).__init__()
+ self.app = app
+ self.setDaemon(True)
+
+ def run(self):
+ while True:
+ self.expire_sessions()
+ sleep(60)
+
+ def expire_sessions(self):
+ when = datetime.now() - timedelta(hours=2)
+ count = 0
+
+ for session in self.app.user_sessions_by_id.values():
+ if session.created < when:
+ session.delete()
+ count += 1
+
+ log.debug("Expired %i sessions", count)
+
class LoginPage(Page):
def __init__(self, app, name):
super(LoginPage, self).__init__(app, name)
More information about the rhmessaging-commits
mailing list