websauna.system.core.redis module

Redis connection manager.

websauna.system.core.redis.create_redis(registry, connection_url=None, redis_client=<class 'redis.client.Redis'>, max_connections=16, **redis_options)[source]

Sets up Redis connection pool once at the start of a process.

Connection pool life cycle is the same as Pyramid registry which is the life cycle of a process (all threads).

Parameters

max_connections – Default per-process connection pool limit

Return type

Redis

websauna.system.core.redis.get_redis(request_or_registry, url=None, redis_client=<class 'redis.client.Redis'>, **redis_options)[source]

Get a connection to Redis.

Example:

from websauna.system.core.redis import get_redis

def my_view(request):
    redis = get_redis(request)
    redis.set("myval", "foobar")
    print(redis.get("myval))

See Transient data data documentation.

See Redis command documentation.

See Redis Python client.

Compatible with pyramid_redis_session, see https://github.com/ericrasmussen/pyramid_redis_sessions/blob/master/pyramid_redis_sessions/connection.py

Parameters
  • request – HTTP request object. NOTE: By legacy this argument also supports Registry object. However this behaviro will be deprecated.

  • url (Optional[str]) – An optional connection string that will be passed straight to StrictRedis.from_url. The connection string should be in the form redis://username:password@localhost:6379/0. If not given use the default from settings.

  • redis_options – A dict of keyword args to be passed straight to StrictRedis

Return type

Redis

Returns

Redis client

websauna.system.core.redis.is_sane_redis(config)[source]

Check that we have a working Redis connection for session.

Execute this on startup, so we bail out without starting up with a missing Redis.

Return type

bool

Returns

True if Redis connection works

websauna.system.core.redis.log_redis_statistics(redis)[source]

Log Redis connection pool statistics at the end of each request.

Help to diagnose connection problems and web process lifetime issues.

We do not need to do specific cleanup, as connnection pool should clean up the connections when they go out of scope. Each Redis client function calls connection.release() at the end of operation.”

websauna.system.core.redis.on_request_log_redis_stats(event)[source]

On every request dump Redis diagnostics information.