CherryPy会话的Redis后端
项目描述
CherryPy 在“我只是HTTP框架”类别中表现非常出色!从版本3.2开始,它默认支持4种类型的会话存储
内存
文件
Redis 作为 Memcached 的替代品越来越受欢迎(并在 dotCloud 上完全支持!)
安装
如果您尚未使用 pip,请安装它。同时,您也可以考虑使用 virtualenv。
$ pip install cherrys
redis-py 和 CherryPy 是必需的依赖项,因此如果需要,将会安装。
我们建议安装 hiredis-py(一个更快的解析器)。
$ pip install hiredis
使用(及滥用)
为了告诉 CherryPy 使用哪个后端,我们需要指定 sessions 工具 的 storage_type。您可能想了解更多关于 CherryPy 的 配置。
tools.sessions.storage_type : 'redis'
但是 CherryPy 不了解 Redis。因此,我们需要做的第一件事是将 cherrys 的 RedisSession 类添加到 cherrypy.lib.sessions。
import cherrys cherrypy.lib.sessions.RedisSession = cherrys.RedisSession
就这么简单!
配置字典
您可以设置一些可选参数
host [127.0.0.1](当 is_sentinel 为真时,这是哨兵服务的地址)
port [6379](当 is_sentinel 为真时,这是哨兵服务的端口)
ssl [False] (适用于sentinel和redis)
db [0]
prefix [“”] (如果提供,则添加到会话ID前面;当启用ACLs时很有用)
user [None] (对于旧版认证,可以设置为空字符串)
password [None]
lock_timeout [None] (None,或直到会话锁过期的时间(秒))
url [None] (替代host/port/ssl/db/user/password组合)
与Sentinel相关的附加(可选)参数
is_sentinel [False]
sentinel_pass [None]
sentinel_service [None]
tls_skip_verify [False]
要激活由Redis支持的会话的完整配置字典如下。
config = { 'tools.sessions.on' : True, 'tools.sessions.storage_type' : 'redis', 'tools.sessions.host': REDIS_HOST, 'tools.sessions.port': REDIS_PORT, 'tools.sessions.db': REDIS_DB, 'tools.sessions.prefix': REDIS_PREFIX, 'tools.sessions.user': REDIS_USER, 'tools.sessions.password': REDIS_PASS, 'tools.sessions.lock_timeout: LOCK_TIME_SECONDS, }
要激活由RedisSentinelSSL支持的会话的完整配置字典如下。
config = { 'tools.sessions.on' : True, 'tools.sessions.storage_type' : 'redis', 'tools.sessions.host': REDIS_HOST, 'tools.sessions.port': REDIS_PORT, 'tools.sessions.ssl': True, 'tools.sessions.db': REDIS_DB, 'tools.sessions.prefix': REDIS_PREFIX, 'tools.sessions.user': REDIS_USER, 'tools.sessions.password': REDIS_PASS, 'tools.sessions.lock_timeout: LOCK_TIME_SECONDS, 'tools.sessions.is_sentinel': True, 'tools.sessions.sentinel_pass': REDIS_SENTINEL_PASS, 'tools.sessions.sentinel_service': REDIS_SENTINEL_SERVICENAME, 'tools.sessions.tls_skip_verify': True, }
通过redis URL进行配置
作为一个快捷方式,也可以提供redis服务器的URL。
import cherrys config = { 'tools.sessions.on' : True, # next setting removes the need for initializing `cherrypy.lib.sessions.RedisSession' above: 'tools.sessions.storage_class' : cherrys.RedisSession, 'tools.sessions.url': 'redis://your-name:your-pwd@redis-server:6379/2' }
URL末尾的数字(“2”)表示要使用的redis数据库。
运行unittests
Unittests需要在本地的localhost:6379上运行没有认证的redis-server。
然后安装pytest到您的当前虚拟env,并在命令行中启动它
$ pip install pytest $ pytest
项目详情
cherrys-2023.2.0.tar.gz的散列
算法 | 散列摘要 | |
---|---|---|
SHA256 | 7e5787cce55cfc38fbf11d213c4065439133343dd40a34b1820ea37296cdfad7 |
|
MD5 | c3d27774919b5d12e12eae9b0775067f |
|
BLAKE2b-256 | 4c00e640b5347c695a0f29e17d3fdd1feeadd4e29cac14e4bccf3e6faf9b10d5 |