Added redis how backend for sessions
This commit is contained in:
parent
30c8fdd2d2
commit
0d1c953880
1 changed files with 69 additions and 3 deletions
|
|
@ -15,6 +15,7 @@ except:
|
||||||
class config:
|
class config:
|
||||||
cookie_name='paramecio.session'
|
cookie_name='paramecio.session'
|
||||||
key_encrypt=create_key_encrypt_256(30)
|
key_encrypt=create_key_encrypt_256(30)
|
||||||
|
session_opts={'session.data_dir': 'sessions', 'session.type': 'file'}
|
||||||
|
|
||||||
# Cookie session
|
# Cookie session
|
||||||
# This save the session in a cookie for maximum performance. In next version i can use memcached or something for session
|
# This save the session in a cookie for maximum performance. In next version i can use memcached or something for session
|
||||||
|
|
@ -69,11 +70,15 @@ class ParamecioSession:
|
||||||
|
|
||||||
def save(self):
|
def save(self):
|
||||||
|
|
||||||
|
# Here get the function for load session
|
||||||
|
"""
|
||||||
path_cookie=config.session_opts['session.data_dir']+'/session_'+self.session['token']
|
path_cookie=config.session_opts['session.data_dir']+'/session_'+self.session['token']
|
||||||
|
|
||||||
with open(path_cookie, 'w') as f:
|
with open(path_cookie, 'w') as f:
|
||||||
f.write(json.dumps(self.session))
|
f.write(json.dumps(self.session))
|
||||||
|
"""
|
||||||
|
|
||||||
|
save_session(self.session['token'], self.session)
|
||||||
|
|
||||||
def generate_session(session={}):
|
def generate_session(session={}):
|
||||||
|
|
||||||
|
|
@ -109,7 +114,10 @@ def get_session():
|
||||||
s=generate_session()
|
s=generate_session()
|
||||||
|
|
||||||
else:
|
else:
|
||||||
|
|
||||||
|
# Here get the function for load session
|
||||||
|
|
||||||
|
"""
|
||||||
path_cookie=config.session_opts['session.data_dir']+'/session_'+cookie
|
path_cookie=config.session_opts['session.data_dir']+'/session_'+cookie
|
||||||
|
|
||||||
if os.path.isfile(path_cookie):
|
if os.path.isfile(path_cookie):
|
||||||
|
|
@ -124,7 +132,10 @@ def get_session():
|
||||||
s={'token': cookie}
|
s={'token': cookie}
|
||||||
else:
|
else:
|
||||||
s={'token': cookie}
|
s={'token': cookie}
|
||||||
|
"""
|
||||||
|
|
||||||
|
s=load_session(cookie)
|
||||||
|
|
||||||
request.environ['session']=s
|
request.environ['session']=s
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -133,8 +144,63 @@ def get_session():
|
||||||
s=request.environ['session']
|
s=request.environ['session']
|
||||||
|
|
||||||
return ParamecioSession(s)
|
return ParamecioSession(s)
|
||||||
|
|
||||||
|
if config.session_opts['session.type']=='redis':
|
||||||
|
|
||||||
|
import redis
|
||||||
|
|
||||||
|
def load_session(token):
|
||||||
|
|
||||||
|
s={}
|
||||||
|
|
||||||
|
r=redis.StrictRedis(host=config.session_opts['session.host'], port=config.session_opts['session.port'], db=config.session_opts['session.db'])
|
||||||
|
|
||||||
|
value=r.get(token)
|
||||||
|
|
||||||
|
if not value:
|
||||||
|
s={'token': token}
|
||||||
|
else:
|
||||||
|
try:
|
||||||
|
s=json.loads(value.decode('utf-8'))
|
||||||
|
except:
|
||||||
|
s={'token': token}
|
||||||
|
return s
|
||||||
|
|
||||||
|
def save_session(token, session):
|
||||||
|
|
||||||
|
r=redis.StrictRedis(host=config.session_opts['session.host'], port=config.session_opts['session.port'], db=config.session_opts['session.db'])
|
||||||
|
|
||||||
|
r.set(token, json.dumps(session))
|
||||||
|
|
||||||
|
else:
|
||||||
|
|
||||||
|
def load_session(token):
|
||||||
|
|
||||||
|
# Here get the function for load session
|
||||||
|
|
||||||
|
path_cookie=config.session_opts['session.data_dir']+'/session_'+token
|
||||||
|
|
||||||
|
if os.path.isfile(path_cookie):
|
||||||
|
|
||||||
|
with open(path_cookie) as f:
|
||||||
|
|
||||||
|
json_txt=f.read()
|
||||||
|
|
||||||
|
if(json_txt).strip()!='':
|
||||||
|
s=json.loads(json_txt)
|
||||||
|
else:
|
||||||
|
s={'token': token}
|
||||||
|
else:
|
||||||
|
s={'token': token}
|
||||||
|
|
||||||
|
return s
|
||||||
|
|
||||||
|
def save_session(token, session):
|
||||||
|
|
||||||
|
path_cookie=config.session_opts['session.data_dir']+'/session_'+token
|
||||||
|
|
||||||
|
with open(path_cookie, 'w') as f:
|
||||||
|
f.write(json.dumps(session))
|
||||||
|
|
||||||
"""
|
"""
|
||||||
def generate_session():
|
def generate_session():
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue