From b2c23d6ddcb581a1dfd44f3a695aab15b35c9b63 Mon Sep 17 00:00:00 2001 From: Frederick Muriuki Muriithi Date: Tue, 8 Aug 2023 04:47:02 +0300 Subject: Fix issues caught by linter * Add a .pylintrc to silence annoying messages * Fix imports * Add missing `parse_db_url` function * Add a new `gn_auth.auth.db.redis` module --- gn_auth/auth/db/redis.py | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 gn_auth/auth/db/redis.py (limited to 'gn_auth/auth/db/redis.py') 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() -- cgit v1.2.3