File size: 1,151 Bytes
5889992 9111274 5889992 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
import redis
import logging
from src.llm.core.config import settings
from src.llm.utils.logging import TheryBotLogger
class RedisConnection:
_instance = None
def __new__(cls):
if not cls._instance:
cls._instance = super().__new__(cls)
cls._instance._initialize_self()
return cls._instance
def _initialize_self(self) -> None:
self.logger = TheryBotLogger()
self.redis = redis.Redis(
host=settings.REDIS_HOST,
port=settings.REDIS_PORT,
username=settings.REDIS_USERNAME,
password=settings.REDIS_PASSWORD,
decode_responses=True
)
try:
self.redis.ping()
except redis.ConnectionError as e:
self.logger.log_interaction(
interaction_type="redis_connection_failed",
data={"error": str(e)},
level=logging.ERROR
)
raise RuntimeError(f"Redis connection failed: {str(e)}")
@property
def client(self):
if not self.redis.ping():
self._initialize_self()
return self.redis |