TradingAgents/tradingagents/external/redis/client.py

41 lines
1.4 KiB
Python

from redis import Redis, ConnectionPool
from redis.backoff import ExponentialBackoff
from redis.retry import Retry
from redis.exceptions import ResponseError, DataError
from tradingagents.config import settings
import logging
_client = None
logger = logging.getLogger(__name__)
def get_redis_client() -> Redis:
"""Get or create Redis client with lazy initialization."""
global _client
if _client is None:
try:
print(f"INFO: Creating Redis connection pool with host={settings.REDIS_HOST}, port={settings.REDIS_PORT}")
retry = Retry(ExponentialBackoff(), retries=5)
pool = ConnectionPool(
host=settings.REDIS_HOST,
port=settings.REDIS_PORT,
password=settings.REDIS_PASSWORD,
db=settings.REDIS_DB,
decode_responses=False, # Set to False to let RQ handle decoding
encoding='utf-8',
socket_connect_timeout=5,
socket_timeout=5,
health_check_interval=10,
retry=retry,
)
print("INFO: Initializing Redis client")
_client = Redis(connection_pool=pool)
print("INFO: Redis client initialized successfully")
except Exception as e:
print(f"ERROR: Failed to initialize Redis client: {e}")
raise
return _client