|
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 $ |
2 | 2 |
|
3 | 3 | __doc__ = """ |
4 | 4 | WWW request handler (also used in the stand-alone server). |
@@ -215,18 +215,11 @@ def determine_user(self): |
215 | 215 | # determine the uid to use |
216 | 216 | self.opendb('admin') |
217 | 217 |
|
| 218 | + self.clean_sessions() |
| 219 | + |
218 | 220 | # make sure we have the session Class |
219 | 221 | sessions = self.db.sessions |
220 | 222 |
|
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 | | - |
230 | 223 | # look up the user session cookie |
231 | 224 | cookie = Cookie.Cookie(self.env.get('HTTP_COOKIE', '')) |
232 | 225 | user = 'anonymous' |
@@ -262,6 +255,25 @@ def determine_user(self): |
262 | 255 | # reopen the database as the correct user |
263 | 256 | self.opendb(self.user) |
264 | 257 |
|
| 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 | + |
265 | 277 | def determine_context(self, dre=re.compile(r'([^\d]+)(\d+)')): |
266 | 278 | ''' Determine the context of this page from the URL: |
267 | 279 |
|
|
0 commit comments