updated Mongo Postgres Redis Controllers

This commit is contained in:
2025-04-01 13:37:36 +03:00
parent 5d30bc2701
commit 6b9e9050a2
16 changed files with 1700 additions and 48 deletions

View File

@@ -27,8 +27,9 @@ class RedisConn:
max_retries: Maximum number of connection attempts.
"""
self.max_retries = max_retries
self.config = config
self.config = config or {}
self._redis = None
self._pool = None
# Add default parameters if not provided
if "socket_timeout" not in self.config:
@@ -45,6 +46,22 @@ class RedisConn:
# Initialize the connection with retry logic
self._connect_with_retry()
def __del__(self):
"""Cleanup Redis connection and pool on object destruction."""
self.close()
def close(self) -> None:
"""Close Redis connection and connection pool."""
try:
if self._redis:
self._redis.close()
self._redis = None
if self._pool:
self._pool.disconnect()
self._pool = None
except Exception as e:
print(f"Error closing Redis connection: {str(e)}")
def _connect_with_retry(self) -> None:
"""
Attempt to establish a Redis connection with retry logic.
@@ -54,7 +71,10 @@ class RedisConn:
"""
for attempt in range(1, self.max_retries + 1):
try:
self._redis = Redis(**self.config)
if self._pool is None:
from redis import ConnectionPool
self._pool = ConnectionPool(**self.config)
self._redis = Redis(connection_pool=self._pool)
if self.check_connection():
return
except (ConnectionError, TimeoutError) as e: