tornado下自写一个session模块




https://github.com/grasses/mongosion

#####An easy session module, writed by python base on pymongo using for tornado.py or web.py!

公司要我写个内部share平台,那就写吧,那就写了。(泪流满面 T_T)

平台基于python.tornado,以mongodb为数据库。

初次接触tornado,感觉比较陌生,T_T, 坑是有的,很多模块没有,session,log等。

那就写呗,那就写了。T_T说多都是泪。

0x01.Installation


###use pip

pip install mongosion

###or source

wget https://pypi.python.org/packages/source/m/mongosion/mongosion-0.1.3.tar.gz

tar -zxvf mongosion-0.1.3.tar.gz

cd mongosion-0.10/

sudo python setup.py install


下面是关于宿主环境安装介绍,已安装的跳过

开发安装环境 Python 2.7.8,详细兼容性为知…..我只用过python27….

1、先安装tornado(我用的是tornado,用web.py啥的也一样)

pip

pip install

or source

wget http://github.com/downloads/facebook/tornado/tornado-2.0.tar.gz

tar xvzf tornado-2.0.tar.gz

cd tornado-2.0

python setup.py build

sudo python setup.py install    

2、安装mongodb

给你个教程吧,太多了,题外话了。

mac 下安装mongodb

centos 下安装mongodb

反正不管用什么手段,安装完,启动。

启动(mac下):

sudo mongod 

3、安装pymong(mongodb在python下地依赖包)

pymongo 官网

直接pip好了

pip install pymongo

插话:关于pymongo搜索有个很好教程。

0x02.mongosion

=========================================

mongosion包含两个类,基类SessionBase和派生类Session,基类主要负责mongodb数据库查询,派生类主要负责数据处理以及逻辑结构。


查找、保存原则:如果有返回数据,如果没有,创新新的session,此时记得更新cookie,模块只负责select, update, insert, delete.


get(),delete(),exist()这3个函数要提供session id


save() 要提供session数据内容(json),默认数据格式在setting里面设置


expired() 不需要参数

setting可以设置:

  • 过期时间

  • 是否自动删除过期

  • session内容自定义

####mongosion give you 5 function:

get( session_id ) => get session

delete( session_id ) => remove session

save( session_id, {}) => save sesssion

exist( session_id ) => check session is existion

expired() => delete expired sessions

####data type

{'_id':'', 'time':'', 'session': {'uid':'', 'status':'', ......} } 

#####setting
setting = {

    # mongodb setting
    'host':'localhost',
    'port': 27017,
    'databse':'mongosion',

    #session setting
    'session_id': '',
    'sessionExpires': 24*60*60,
    'autoDeleteExpired': True, # clean expired sessions at every get 
    'secretKey':base64.b64encode(uuid.uuid4().bytes + uuid.uuid4().bytes),
    'session' : { 'uid':'520', 'status':'useing', 'isLogin':False } # default type of data
}

####源码查看

https://github.com/grasses/mongosion/blob/master/mongosion/init.py

0x03.mongosion原理

how to work

process

mongosion.get(session_id)

process

mongosion.save(session_id, {‘uid’:’’, ‘isLogin’: True})

process

0x04.Warning


####remember install pymongo && run mongodb


0x05.License


####GPL




本文出自 夏日小草,转载请注明出处:http://homeway.me/2014/08/28/mongosion/


-by 小草
2014-08-28

Fork me on GitHub