29 lines
906 B
Python
29 lines
906 B
Python
|
|
||
|
import os, time, stat, logging
|
||
|
from gluon._compat import pickle
|
||
|
|
||
|
EXPIRATION_MINUTES = 60
|
||
|
|
||
|
path = os.path.join(request.folder, 'sessions')
|
||
|
if not os.path.exists(path):
|
||
|
os.mkdir(path)
|
||
|
now = time.time()
|
||
|
for path, dirs, files in os.walk(path, topdown=False):
|
||
|
for x in files:
|
||
|
fullpath = os.path.join(path, x)
|
||
|
try:
|
||
|
filetime = os.stat(fullpath)[stat.ST_MTIME] # get it before our io
|
||
|
try:
|
||
|
session_data = pickle.load(open(fullpath, 'rb+'))
|
||
|
expiration = session_data['auth']['expiration']
|
||
|
except:
|
||
|
expiration = EXPIRATION_MINUTES * 60
|
||
|
if (now - filetime) > expiration:
|
||
|
os.unlink(fullpath)
|
||
|
except:
|
||
|
logging.exception('failure to check %s' % fullpath)
|
||
|
for d in dirs:
|
||
|
dd = os.path.join(path, d)
|
||
|
if not os.listdir(dd):
|
||
|
os.rmdir(dd)
|