import os import redis import logging logger = logging.getLogger(__name__) def get_redis_client(): redis_url = os.getenv("REDIS_URL", "redis://localhost:6379/0") # Handle TLS for Upstash Redis _is_tls = redis_url.startswith("rediss://") if _is_tls: # Normalize ssl_cert_reqs to 'none' if it is 'CERT_NONE' (case-insensitive) to prevent redis-py errors if "ssl_cert_reqs=" in redis_url: redis_url = redis_url.replace("ssl_cert_reqs=CERT_NONE", "ssl_cert_reqs=none") redis_url = redis_url.replace("ssl_cert_reqs=cert_none", "ssl_cert_reqs=none") else: if "?" in redis_url: redis_url += "&ssl_cert_reqs=none" else: redis_url += "?ssl_cert_reqs=none" try: # If it's rediss://, redis.from_url handles ssl parameters client = redis.Redis.from_url(redis_url, decode_responses=True) return client except Exception as e: logger.error(f"Error creating Redis client: {e}") return None