Fix redis ssl issues 2

This commit is contained in:
2026-01-24 19:28:29 +01:00
parent 08f84e951a
commit c56c558618
11 changed files with 174 additions and 122 deletions

View File

@@ -53,6 +53,7 @@ class SchedulerLeaderMixin:
self._redis_url = redis_url
self._service_name = service_name
self._leader_election = None
self._redis_manager = None
self._redis_client = None
self.scheduler = None
self._scheduler_started = False
@@ -63,21 +64,16 @@ class SchedulerLeaderMixin:
Only the leader will start the scheduler.
"""
import ssl
from apscheduler.schedulers.asyncio import AsyncIOScheduler
from shared.leader_election.service import LeaderElectionService
import redis.asyncio as redis
from shared.redis_utils import RedisConnectionManager
try:
# Create Redis connection with proper SSL handling for self-signed certificates
connection_kwargs = {"decode_responses": False}
# Handle SSL/TLS for rediss:// URLs (self-signed certificates)
if self._redis_url and self._redis_url.startswith("rediss://"):
connection_kwargs["ssl_cert_reqs"] = ssl.CERT_NONE
self._redis_client = redis.from_url(self._redis_url, **connection_kwargs)
await self._redis_client.ping()
# Create Redis connection using shared manager (handles SSL, pooling, health checks)
self._redis_manager = await RedisConnectionManager.create(
self._redis_url, decode_responses=False
)
self._redis_client = self._redis_manager.get_client()
# Create scheduler (but don't start it yet)
self.scheduler = AsyncIOScheduler()
@@ -197,9 +193,9 @@ class SchedulerLeaderMixin:
# Stop scheduler
await self._stop_scheduler()
# Close Redis
if self._redis_client:
await self._redis_client.close()
# Close Redis manager (handles client and pool cleanup)
if self._redis_manager:
await self._redis_manager.close()
logger.info("Scheduler service stopped",
service=self._service_name)