aboutsummaryrefslogtreecommitdiff
path: root/gn_auth/auth/db/redis.py
diff options
context:
space:
mode:
authorFrederick Muriuki Muriithi2023-08-08 04:47:02 +0300
committerFrederick Muriuki Muriithi2023-08-08 04:47:02 +0300
commitb2c23d6ddcb581a1dfd44f3a695aab15b35c9b63 (patch)
treeb7c049fb75afda32589847d8517c6218c7f29014 /gn_auth/auth/db/redis.py
parentd88ef631a78c32baed34a126d79f4679a2f09d10 (diff)
downloadgn-auth-b2c23d6ddcb581a1dfd44f3a695aab15b35c9b63.tar.gz
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
Diffstat (limited to 'gn_auth/auth/db/redis.py')
-rw-r--r--gn_auth/auth/db/redis.py22
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()