Spaces:
Configuration error
Configuration error
| """ | |
| Redis connection management for Workforce Microservice. | |
| """ | |
| import redis.asyncio as redis | |
| from app.core.logging import get_logger | |
| from app.core.config import settings | |
| logger = get_logger(__name__) | |
| redis_client: redis.Redis = None | |
| async def connect_to_redis(): | |
| global redis_client | |
| try: | |
| pool_params = { | |
| "host": settings.REDIS_HOST, | |
| "port": settings.REDIS_PORT, | |
| "db": settings.REDIS_DB, | |
| "decode_responses": True, | |
| "max_connections": 5, | |
| "socket_keepalive": True, | |
| "socket_connect_timeout": 5, | |
| "socket_timeout": 5, | |
| "retry_on_timeout": False, | |
| "health_check_interval": 30, | |
| } | |
| if settings.REDIS_PASSWORD: | |
| pool_params["password"] = settings.REDIS_PASSWORD | |
| pool = redis.ConnectionPool(**pool_params) | |
| redis_client = redis.Redis(connection_pool=pool, decode_responses=True) | |
| await redis_client.ping() | |
| logger.info("Connected to Redis", extra={"host": settings.REDIS_HOST}) | |
| except Exception as e: | |
| logger.warning("Redis connection failed (non-critical) - caching disabled", exc_info=e) | |
| redis_client = None | |
| async def close_redis_connection(): | |
| global redis_client | |
| if redis_client: | |
| try: | |
| await redis_client.aclose() | |
| logger.info("Redis connection closed") | |
| except Exception as e: | |
| logger.debug("Error closing Redis connection", exc_info=e) | |
| finally: | |
| redis_client = None | |
| def get_redis() -> redis.Redis: | |
| return redis_client | |