Skip to content

Commit b7e278b

Browse files
author
Anthony Baxter
committed
only clean sessions once per hour (backport from trunk)
1 parent 304fbb0 commit b7e278b

File tree

1 file changed

+22
-10
lines changed

1 file changed

+22
-10
lines changed

roundup/cgi/client.py

Lines changed: 22 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
# $Id: client.py,v 1.65.2.10 2003-06-24 03:33:56 richard Exp $
1+
# $Id: client.py,v 1.65.2.11 2003-06-24 04:23:35 anthonybaxter Exp $
22

33
__doc__ = """
44
WWW request handler (also used in the stand-alone server).
@@ -215,18 +215,11 @@ def determine_user(self):
215215
# determine the uid to use
216216
self.opendb('admin')
217217

218+
self.clean_sessions()
219+
218220
# make sure we have the session Class
219221
sessions = self.db.sessions
220222

221-
# age sessions, remove when they haven't been used for a week
222-
# TODO: this shouldn't be done every access
223-
week = 60*60*24*7
224-
now = time.time()
225-
for sessid in sessions.list():
226-
interval = now - sessions.get(sessid, 'last_use')
227-
if interval > week:
228-
sessions.destroy(sessid)
229-
230223
# look up the user session cookie
231224
cookie = Cookie.Cookie(self.env.get('HTTP_COOKIE', ''))
232225
user = 'anonymous'
@@ -262,6 +255,25 @@ def determine_user(self):
262255
# reopen the database as the correct user
263256
self.opendb(self.user)
264257

258+
def clean_sessions(self):
259+
''' Age sessions, remove when they haven't been used for a week.
260+
261+
Do it only once an hour.
262+
'''
263+
sessions = self.db.sessions
264+
last_clean = sessions.get('last_clean', 'last_use') or 0
265+
266+
week = 60*60*24*7
267+
hour = 60*60
268+
now = time.time()
269+
if now - last_clean > hour:
270+
# remove aged sessions
271+
for sessid in sessions.list():
272+
interval = now - sessions.get(sessid, 'last_use')
273+
if interval > week:
274+
sessions.destroy(sessid)
275+
sessions.set('last_clean', last_use=time.time())
276+
265277
def determine_context(self, dre=re.compile(r'([^\d]+)(\d+)')):
266278
''' Determine the context of this page from the URL:
267279

0 commit comments

Comments
 (0)