首页 > 其他 > 详细

redis_session_store.py

时间:2014-01-24 01:00:41      阅读:507      评论:0      收藏:0      [点我收藏+]
bubuko.com,布布扣
# -*- coding: utf-8 -*-
"""
Created on 09/11/2011
@author: Carlo Pires <carlopires@gmail.com>
"""
import tnetstring
from werkzeug.contrib.sessions import SessionStore
 
SESSION_TIMEOUT = 60*60*24*7 # 7 weeks in seconds
 
class RedisSessionStore(SessionStore):
"""
SessionStore that saves session to redis
"""
def __init__(self, redis, key_template=session:%s, generate_salt=None):
 
if not generate_salt:
from users import get_config
generate_salt = get_config().users_secret
 
SessionStore.__init__(self)
self.redis = redis
self.key_template = key_template
self.generate_salt = generate_salt
 
def new(self):
"""Generate a new session."""
return self.session_class({}, self.generate_key(self.generate_salt), True)
 
def get_session_key(self, sid):
if isinstance(sid, unicode):
sid = sid.encode(utf-8)
return self.key_template % sid
 
def save(self, session):
key = self.get_session_key(session.sid)
if self.redis.set(key, tnetstring.dumps(dict(session))):
return self.redis.expire(key, SESSION_TIMEOUT)
 
def delete(self, session):
key = self.get_session_key(session.sid)
return self.redis.delete(key)
 
def get(self, sid):
if not self.is_valid_key(sid):
return self.new()
key = self.get_session_key(sid)
saved = self.redis.get(key)
if saved:
data = tnetstring.loads(saved)
return self.session_class(data, sid, False)
 
def list(self):
"""
Lists all sessions in the store.
"""
session_keys = self.redis.keys(self.key_template[:-2] + *)
return [s[len(self.key_template)-2:] for s in session_keys]
bubuko.com,布布扣

redis_session_store.py

原文:http://www.cnblogs.com/chjbbs/p/3531407.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!