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 |
@@ -32,6 +32,8 b' self: super: {' | |||||
32 | patches = [ |
|
32 | patches = [ | |
33 | ./patches/beaker/patch-beaker-lock-func-debug.diff |
|
33 | ./patches/beaker/patch-beaker-lock-func-debug.diff | |
34 | ./patches/beaker/patch-beaker-metadata-reuse.diff |
|
34 | ./patches/beaker/patch-beaker-metadata-reuse.diff | |
|
35 | ./patches/beaker/patch-beaker-improved-redis.diff | |||
|
36 | ./patches/beaker/patch-beaker-improved-redis-2.diff | |||
35 | ]; |
|
37 | ]; | |
36 | }); |
|
38 | }); | |
37 |
|
39 |
General Comments 0
You need to be logged in to leave comments.
Login now