Mercurial > libervia-backend
diff src/memory/memory.py @ 1215:d9c399ec5dd9
memory: session timeout won't be reset on each access if the Sessions() is called with resettable_timeout=False
author | souliane <souliane@mailoo.org> |
---|---|
date | Mon, 22 Sep 2014 19:24:07 +0200 |
parents | ed3b01ed70d7 |
children | 5e5661ab5c81 |
line wrap: on
line diff
--- a/src/memory/memory.py Mon Sep 22 18:42:54 2014 +0200 +++ b/src/memory/memory.py Mon Sep 22 19:24:07 2014 +0200 @@ -40,12 +40,14 @@ """Sessions are data associated to key used for a temporary moment, with optional profile checking.""" DEFAULT_TIMEOUT = 600 - def __init__(self, timeout=None): + def __init__(self, timeout=None, resettable_timeout=True): """ - @param timeout: nb of seconds before session destruction + @param timeout (int): nb of seconds before session destruction + @param resettable_timeout (bool): if True, the timeout is reset on each access """ self._sessions = dict() self.timeout = timeout or Sessions.DEFAULT_TIMEOUT + self.resettable_timeout = resettable_timeout def newSession(self, session_data=None, session_id=None, profile=None): """ Create a new session @@ -83,7 +85,8 @@ raise exceptions.InternalError("You need to use __getitem__ when profile is not set") if profile_set != profile: raise exceptions.InternalError("current profile differ from set profile !") - timer.reset(self.timeout) + if self.resettable_timeout: + timer.reset(self.timeout) return session_data def __getitem__(self, session_id): @@ -91,7 +94,8 @@ timer, session_data = self._sessions[session_id] except ValueError: raise exceptions.InternalError("You need to use profileGet instead of __getitem__ when profile is set") - timer.reset(self.timeout) + if self.resettable_timeout: + timer.reset(self.timeout) return session_data def __setitem__(self, key, value): @@ -146,7 +150,7 @@ ids = self._profileGetAllIds(profile) if len(ids) > 1: raise exceptions.InternalError('profileGetUnique has been used but more than one session has been found!') - return self.profileGet(ids[0], profile) if len(ids) == 1 else None + return self.profileGet(ids[0], profile) if len(ids) == 1 else None # XXX: timeout might be reset def profileDelUnique(self, profile):