melodix-api / app /utils /redis_client.py
GitHub Action
deploy from github actions
440bac0
Raw
History Blame Contribute Delete
1.06 kB
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