Spaces:
Running
Running
| 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 | |