Expire sessions generated by health checks quickly

The default expiration of sessions is 7 days. With healthchecks run
every few seconds, we quickly have millions of anonymous sessions in
Redis. Allow to define a custom expiration for some sessions and set a
very short one for the monitoring requests.
This commit is contained in:
Guewen Baconnier
2018-01-11 10:46:55 +01:00
committed by jcoux
co-authored by jcoux
parent 8eaa15df7b
commit 39e71ff334
2 changed files with 14 additions and 2 deletions
+5 -2
View File
@@ -37,6 +37,9 @@ class RedisSessionStore(SessionStore):
def save(self, session):
key = self.build_key(session.sid)
# allow to set a custom expiration for a session
# such as a very short one for monitoring requests
expiration = session.expiration or self.expiration
if _logger.isEnabledFor(logging.DEBUG):
if session.uid:
user_msg = "user '%s' (id: %s)" % (
@@ -45,11 +48,11 @@ class RedisSessionStore(SessionStore):
user_msg = "anonymous user"
_logger.debug("saving session with key '%s' and "
"expiration of %s seconds for %s",
key, self.expiration, user_msg)
key, expiration, user_msg)
data = json.dumps(dict(session)).encode('utf-8')
if self.redis.set(key, data):
return self.redis.expire(key, self.expiration)
return self.redis.expire(key, expiration)
def delete(self, session):
key = self.build_key(session.sid)