feat: Add redis pool singleton

This commit is contained in:
inexcode 2022-10-28 11:09:36 +03:00
parent 8cdacb73dd
commit 19a4ec5377
2 changed files with 33 additions and 0 deletions

View file

@ -0,0 +1,32 @@
"""
Redis pool module for selfprivacy_api
"""
import redis.asyncio as redis
from selfprivacy_api.utils.singleton_metaclass import SingletonMetaclass
REDIS_SOCKET = "/run/redis-sp-api/redis.sock"
class RedisPool(metaclass=SingletonMetaclass):
"""
Redis connection pool singleton.
"""
def __init__(self):
self._pool = redis.ConnectionPool.from_url(
f"unix://{REDIS_SOCKET}",
decode_responses=True,
)
self._pubsub_connection = self.get_connection()
def get_connection(self):
"""
Get a connection from the pool.
"""
return redis.Redis(connection_pool=self._pool)
def get_pubsub(self):
"""
Get a pubsub connection from the pool.
"""
return self._pubsub_connection.pubsub()

View file

@ -18,6 +18,7 @@ let
black black
fastapi fastapi
uvicorn uvicorn
redis
(buildPythonPackage rec { (buildPythonPackage rec {
pname = "strawberry-graphql"; pname = "strawberry-graphql";
version = "0.123.0"; version = "0.123.0";