跳转到主要内容

CherryPy会话的Redis后端

项目描述

CherryPy 在“我只是HTTP框架”类别中表现非常出色!从版本3.2开始,它默认支持4种类型的会话存储

Redis 作为 Memcached 的替代品越来越受欢迎(并在 dotCloud 上完全支持!)

安装

如果您尚未使用 pip,请安装它。同时,您也可以考虑使用 virtualenv

$ pip install cherrys

redis-pyCherryPy 是必需的依赖项,因此如果需要,将会安装。

我们建议安装 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 (4.4 kB 查看散列)

上传

由以下机构支持