Show More
@@ -0,0 +1,18 b'' | |||
|
1 | diff -rup Beaker-1.9.1-orig/beaker/session.py Beaker-1.9.1/beaker/session.py | |
|
2 | --- Beaker-1.9.1-orig/beaker/session.py 2020-04-10 10:23:04.000000000 +0200 | |
|
3 | +++ Beaker-1.9.1/beaker/session.py 2020-04-10 10:23:34.000000000 +0200 | |
|
4 | @@ -156,6 +156,14 @@ def __init__(self, request, id=None, invalidate_corrupt=False, | |
|
5 | if timeout and not save_accessed_time: | |
|
6 | raise BeakerException("timeout requires save_accessed_time") | |
|
7 | self.timeout = timeout | |
|
8 | + # We want to pass timeout param to redis backend to support expiration of keys | |
|
9 | + # In future, I believe, we can use this param for memcached and mongo as well | |
|
10 | + if self.timeout is not None and self.type == 'ext:redis': | |
|
11 | + # The backend expiration should always be a bit longer (I decied to use 2 minutes) than the | |
|
12 | + # session expiration itself to prevent the case where the backend data expires while | |
|
13 | + # the session is being read (PR#153) | |
|
14 | + self.namespace_args['timeout'] = self.timeout + 60 * 2 | |
|
15 | + | |
|
16 | self.save_atime = save_accessed_time | |
|
17 | self.use_cookies = use_cookies | |
|
18 | self.cookie_expires = cookie_expires No newline at end of file |
@@ -0,0 +1,26 b'' | |||
|
1 | diff -rup Beaker-1.9.1-orig/beaker/ext/redisnm.py Beaker-1.9.1/beaker/ext/redisnm.py | |
|
2 | --- Beaker-1.9.1-orig/beaker/ext/redisnm.py 2018-04-10 10:23:04.000000000 +0200 | |
|
3 | +++ Beaker-1.9.1/beaker/ext/redisnm.py 2018-04-10 10:23:34.000000000 +0200 | |
|
4 | @@ -30,9 +30,10 @@ class RedisNamespaceManager(NamespaceManager): | |
|
5 | ||
|
6 | clients = SyncDict() | |
|
7 | ||
|
8 | - def __init__(self, namespace, url, **kw): | |
|
9 | + def __init__(self, namespace, url, timeout=None, **kw): | |
|
10 | super(RedisNamespaceManager, self).__init__(namespace) | |
|
11 | self.lock_dir = None # Redis uses redis itself for locking. | |
|
12 | + self.timeout = timeout | |
|
13 | ||
|
14 | if redis is None: | |
|
15 | raise RuntimeError('redis is not available') | |
|
16 | @@ -68,6 +69,8 @@ def has_key(self, key): | |
|
17 | ||
|
18 | def set_value(self, key, value, expiretime=None): | |
|
19 | value = pickle.dumps(value) | |
|
20 | + if expiretime is None and self.timeout is not None: | |
|
21 | + expiretime = self.timeout | |
|
22 | if expiretime is not None: | |
|
23 | self.client.setex(self._format_key(key), int(expiretime), value) | |
|
24 | else: | |
|
25 | ||
|
26 |
General Comments 0
You need to be logged in to leave comments.
Login now