from web.session import Store
import time
class MongoStore(Store):
def __init__(self, db, collection_name):
self.collection = db[collection_name]
def __contains__(self, key):
data = self.collection.find_one({'session_id':key})
return bool(data)
def __getitem__(self, key):
now = time.time()
s = self.collection.find_one({'session_id':key})
if not s:
raise KeyError
else:
s.update({'attime':now})
return s
def __setitem__(self, key, value):
now = time.time()
value['attime'] = now
s = self.collection.find_one({'session_id':key})
if s:
value = dict(map(lambda x: (str(x[0]), x[1]), [(k,v) for (k,v) in value.iteritems() if k not in ['_id']]))
s.update(**value)
self.collection.save(s)
else:
self.collection.insert(value)
def __delitem__(self, key):
self.collection.remove({'session_id':key})
def cleanup(self, timeout):
timeout = timeout/(24.0*60*60) #timedelta takes numdays as arg
last_allowed_time = time.time() - timeout
self.collection.remove({'attime' : { '$lt' : last_allowed_time}})
在你的app中使用
代替
DiskStore是直接进行磁盘io操作的,性能很低,而mongodb操作相当于内存操作了。
已有 2 人发表留言,猛击->>这里<<-参与讨论
JavaEye推荐
版权声明:本文为CSDN博主「weixin_34075268」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_34075268/article/details/91948422
原文链接:https://blog.csdn.net/weixin_34075268/article/details/91948422
更多相关推荐
解决web.py在SAE云中的Session使用问题
这段时间一直想尝试着在SAE中使用Python,初步选择了Web.py框架做为开发框架,但是可怜SAE上的资料少的可怜,有点问题基本上解决不了,今天解决一个Session在Session的存储问题,在SAE中不能直接用本地文件存储,好像...
web.py session
web.pysession学习:importwebfromwebimportformurls=('/','Index','/test','Test','/login','Login','/logout','Logout',)render=web.template.render(".")allowed=(('admin','123123'),)web.config.debug=Falseapp...
web.py——session
使用web.py过程中,遇到两个疑问:1、web.py如何管理相对自动的管理session?2、session缓存的更新为何会有延迟?通过学习web.py框架中session相关源码,有了答案:1、web.py通过Session实例作为公共的session使用接...
web.py之session存储方式分析
由于HTTP是无状态的协议,所以有了cookie,所以有了session。当用户与服务器连接时,服务器给每个用户一个session,并设定其中内容。session是建立在cookie之上的。当一个session第一次被启用时,一个唯一的标识被....
web.py 的session 没法使用吗?
web.py的session没法使用吗?来自:小罗快飞2011-12-1510:03:42问题解决了,感谢rosickey的支持app_root=os.path.dirname(__file__)app=web.application(urls,globals()).wsgifunc()db=web.database(dbn='mysql',host...