web.py笔记session

官方的例子

http://webpy.org/cookbook/sessions.zh-cn

 

服务器端有三种方式存session

一种是基本的store ,放在内存里吧

一种是diskstore ,会在code.py同级建一个sessions的文件夹

一种是dbstore,要对应的建一个表,试着改过对应的列的名字,会报错,目前看来也就是这个db的表里面的东西都是固定的

 

 

 create table sessions (
    session_id char(128) UNIQUE NOT NULL,
    atime timestamp NOT NULL default current_timestamp,
    data text
);

 

 

 

测试的结果

 

db.py

   import sqlite3

cx = sqlite3.connect('d:/temp/sessions.db')
cu=cx.cursor()
#cu.execute(''' create table sessions (
    #session_id char(128) UNIQUE NOT NULL,
    #atime timestamp NOT NULL default current_timestamp,
    #data text) 
  #''')
#cx.commit()
cu.execute('select * from sessions')
for i,row in enumerate(cu):
  print i,row
cx.close()
    

 

 code.py

 

import web
import sqlite3
web.config.debug = False
urls = (
    "/count", "count",
    "/reset", "reset"
)
app = web.application(urls, locals())
#store = web.session.DiskStore('sessions')
#session = web.session.Session(app, store, initializer={'count': 0})

db = web.database(dbn='sqlite', db='sessions.db', )
store = web.session.DBStore(db, 'sessions')
session = web.session.Session(app, store, initializer={'count': 0})

class count:
    def GET(self):
        session.count += 1
        return str(session.count)

class reset:
    def GET(self):
        session.kill()
        store.cleanup(0.002)  #加了个cleanup看效果来着
        return ""

if __name__ == "__main__":
    app.run()

 

真是太简单了,连session都有3种方法可以选,我怎么没记得以前java有这么灵活呢?

不过,不管是读写文件还是数据库,总是比较慢的吧?

 

还有挺奇怪的是reset的时候,不要cleanup一下么?只是kill掉进程的话,不论是文件还是db,都会越来越大的 吧?

真要是本番的话,要不要再写个cron定期清一下?

或者如果真的是本番,根本不会用这2个方法?

 

你可能感兴趣的:(session)