Package: cherrys
CherryPykicks some serious arse in the ‘I am just a HTTP framework’ category!
As of version 3.2 it supports 4 types of storage for sessions by default:RamFilePostgreSQLMemcachedRedisis growing in popularity as an alternative toMemcached(and is
fully supported ondotCloud!)InstallationIf you are not usingpipyet. Install it and while you are at it consider
usingvirtualenvtoo.$ pip install cherrysredis-pyandCherryPyare required dependencies hence will be installed if
necessary.We recommend installinghiredis-py(a faster parser) as well.$ pip install hiredisUsage (and abusage)To tellCherryPywhich backend to use, we need to specify thestorage_typefor thesessionstool. You may want to read more aboutCherryPyconfiguration.tools.sessions.storage_type : 'redis'ButCherryPydoesn’t knowRedis. Hence the first thing we need to do is add
the cherrysRedisSessionclass tocherrypy.lib.sessions.import cherrys
cherrypy.lib.sessions.RedisSession = cherrys.RedisSessionIt is that simple!Config dictionaryThere are a few optional parameters you can set:host[127.0.0.1](when is_sentinel this is host for sentinel service)port[6379](when is_sentinel this is port for sentinel service)ssl[False](for both sentinel and redis)db[0]prefix[“”](prepended to session id if given; useful when ACLs are enabled)user[None](for old version of authentication can be set to empty string)password[None]lock_timeout[None](None, or time in seconds until session lock expires)url[None](alternative to host/port/ssl/db/user/password combination)Sentinel-related additional (optional) parameters:is_sentinel[False]sentinel_pass[None]sentinel_service[None]tls_skip_verify[False]A full config dictionary to activateRedisbacked sessions would look like
this.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,
}A full config dictionary to activateRedisSentinelSSLbacked sessions would look like
this.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,
}Configuration via redis URLAs a shortcut a URL to the redis server can be provided as well.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'
}The number at the end of the URL (“2”) denotes the redis database to be used.Running unittestsUnittests require a running redis-server on localhost:6379 setup without
any authentication in place.Then install pytest into your current virtualenv and start it from your command line:$ pip install pytest
$ pytest