diff options
Diffstat (limited to 'gn_auth/auth/db/redis.py')
-rw-r--r-- | gn_auth/auth/db/redis.py | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/gn_auth/auth/db/redis.py b/gn_auth/auth/db/redis.py new file mode 100644 index 0000000..fdf1d6f --- /dev/null +++ b/gn_auth/auth/db/redis.py @@ -0,0 +1,22 @@ +"""Connections for Redis.""" +import logging +import traceback +import contextlib +from typing import Iterator + +from redis import Redis, RedisError, ConnectionError as RedisConnectionError + +@contextlib.contextmanager +def connection(redis_uri) -> Iterator[Redis]: + """Connection to redis""" + rconn = Redis.from_url(redis_uri, decode_responses=True) + try: + if not rconn.ping(): + raise RedisConnectionError("Could not connect to Redis.") + yield rconn + except RedisError as _rerr: + logging.debug(traceback.format_exc()) + raise + finally: + rconn.disconnect() + rconn.close() |