瓶子的基于redis的会话。

bottle-session的Python项目详细描述


与redis的瓶子会话
==


瓶子会话是瓶子微结构的会话管理器,它使用
cookie来维护您的web会话,并使用redis键值存储与该
cookie相关联的哈希。它被设计成一个简单的瓶子
插件。

瓶子会话
$python setup.py install

requirements
----
要使用瓶子会话,必须同时安装redis和
瓶子模块。我也建议安装pycrypto,尽管它不是必需的。如果安装了pycrypto,则pycrypto随机数
生成器用于生成会话cookie,否则,使用python的内部
随机数生成器。

初始化插件:

:::python
app=bottle.app()
plugin=bottle_session.sessionplugin(cookie_lifetime=600)
app.install(plugin)

将生存期显式设置为**无**,则它将持续1周。
`sessionplugin`类初始值设定项有几个可选参数:

-`host`是redis实例的主机。默认为“localhost”。
-`port`是redis实例的端口。默认为“6379”。
-`db'是redis数据库号。默认为“0”。
-`cookie_name`是会话cookie的名称。默认为
`bottle.session`.
-`keyword`是插件关键字。默认为“session”。
-“password”是redis实例的可选密码。默认为
无。

若要使用插件,只需将关键字(`session`默认值)添加到routed
方法:

:::python
@bottle.route('/')
def index(session):
user-name=session.get('name')
如果user-name不是none:
return“您好,%s“%用户名
其他:
返回“我认不出你。”

@bottle.route('/set/:用户名')
def set\u name(session,user\u name=none):
如果用户名不是none:
session['name']=用户名
返回“我现在认你。”
其他:
返回“我认不出你了”是吗?”

bottle.debug(true)
bottle.run(app=app,host='localhost',port=8888)

在本例中,可以通过访问“http://localhost:8888/set/chris”将会话cookie的“name”属性设置为chris
,然后在访问“http://localhost:8888/”时检索该值。

使用瓶子会话和瓶子redis
您可以同时使用这两个插件,甚至可以让它们使用同一个连接池。
在将它们安装到瓶子应用程序之前,通过创建连接池来初始化它们,该连接池连接到每个插件
对象,如下所示:

:::python
/usr/bin/env python
import bottle_session
import bottle_redis
import bottle
import redis
from datetime import datetime

app=bottle.app()
session_plugin=bottle_session.sessionplugin()
redis_plugin=bottle_redis.redisplugin()

=redis.connectionpool(主机='localhost',端口=6379)

session_plugin.connection_pool=connection_pool
redis_plugin.redisdb=connection_pool
app.install(session_plugin)
app.install(redis_plugin)

@bottle.route('/')
def index(session,rdb):
rdb.incr('visitor s')
visitor=rdb.get('visitors')
last-visit=session['visit']
session['visit']=datetime.now().isoformat()

return“您是访问者%s,您的最后一次访问是在%s%(visitor,last-visit)

bottle.debug(true)
bottle.run(app=app,host='localhost',port=8888)

感谢詹姆斯·伯克的贡献。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
如何解决Java泛型通配符/抽象歧义问题?   javacom。苹果eawt我到底应该安装什么   在屏幕旋转后,java片段的目标不在片段管理器中   java测试数据库连接超时   java当子类构造函数的超类具有较少的参数时,如何向其添加更多参数?   部署为jetty中部署为服务的两个应用程序设置不同的java系统属性   发送带有唯一附件的批量电子邮件(服务、java或api)   java如何在Android上使用AlarmManager在所需日期显示Toast   java有没有办法在eclipse中过滤工作区引用(Ctrl+Shift+G),这样就不会看到“潜在匹配”?   java设置textview数组的上下文   java为什么滚动页面时不使用鼠标滚动光标轨迹?   java在运行时更改拓扑属性   java自管理单调递增密钥或系统的时间戳   直接向扬声器发送音频