##// END OF EJS Templates
redis-sessions: fixed cleanup command failing on serialized errors....
super-admin -
r5134:abfd1224 default
parent child Browse files
Show More
@@ -21,7 +21,9 b' import re'
21 import time
21 import time
22 import datetime
22 import datetime
23 import dateutil
23 import dateutil
24 import dateutil.relativedelta
24 import pickle
25 import pickle
26 import base64
25
27
26 from rhodecode.model.db import DbSession, Session
28 from rhodecode.model.db import DbSession, Session
27
29
@@ -199,6 +201,7 b' class RedisAuthSessions(BaseAuthSessions'
199 import redis
201 import redis
200 args = {
202 args = {
201 'socket_timeout': 60,
203 'socket_timeout': 60,
204 'decode_responses': False,
202 'url': self.config.get('beaker.session.url')
205 'url': self.config.get('beaker.session.url')
203 }
206 }
204
207
@@ -217,14 +220,21 b' class RedisAuthSessions(BaseAuthSessions'
217 client = self._get_client()
220 client = self._get_client()
218 expiry_time = time.time() - older_than_seconds
221 expiry_time = time.time() - older_than_seconds
219 deleted_keys = 0
222 deleted_keys = 0
223
220 for key in client.keys('beaker_cache:*'):
224 for key in client.keys('beaker_cache:*'):
221 data = client.get(key)
225 data = client.get(key)
222 if data:
226 if data:
223 json_data = pickle.loads(data)
227 accessed_time = 0
228 data = base64.b64decode(data)
229
224 try:
230 try:
231 json_data = pickle.loads(data)
225 accessed_time = json_data['_accessed_time']
232 accessed_time = json_data['_accessed_time']
233 except pickle.UnpicklingError:
234 accessed_time = 0
226 except KeyError:
235 except KeyError:
227 accessed_time = 0
236 accessed_time = 0
237
228 if accessed_time < expiry_time:
238 if accessed_time < expiry_time:
229 client.delete(key)
239 client.delete(key)
230 deleted_keys += 1
240 deleted_keys += 1
General Comments 0
You need to be logged in to leave comments. Login now