diff --git a/packages/service-library/src/servicelib/redis/_client.py b/packages/service-library/src/servicelib/redis/_client.py index c2a08154110..80f7f29f396 100644 --- a/packages/service-library/src/servicelib/redis/_client.py +++ b/packages/service-library/src/servicelib/redis/_client.py @@ -34,6 +34,7 @@ class RedisClientSDK: client_name: str decode_responses: bool = DEFAULT_DECODE_RESPONSES health_check_interval: datetime.timedelta = DEFAULT_HEALTH_CHECK_INTERVAL + with_health_check: bool = True _client: aioredis.Redis = field(init=False) _health_check_task: Task | None = None @@ -69,10 +70,11 @@ async def _periodic_check_health() -> None: self._health_check_task_started_event.set() self._is_healthy = await self.ping() - self._health_check_task = asyncio.create_task( - _periodic_check_health(), - name=f"redis_service_health_check_{self.redis_dsn}__{uuid4()}", - ) + if self.with_health_check: + self._health_check_task = asyncio.create_task( + _periodic_check_health(), + name=f"redis_service_health_check_{self.redis_dsn}__{uuid4()}", + ) _logger.info( "Connection to %s succeeded with %s", diff --git a/packages/service-library/src/servicelib/redis/_clients_manager.py b/packages/service-library/src/servicelib/redis/_clients_manager.py index 60b93360b88..27b7011b216 100644 --- a/packages/service-library/src/servicelib/redis/_clients_manager.py +++ b/packages/service-library/src/servicelib/redis/_clients_manager.py @@ -20,13 +20,18 @@ class RedisClientsManager: _client_sdks: dict[RedisDatabase, RedisClientSDK] = field(default_factory=dict) async def setup(self) -> None: + use_health_check = True for config in self.databases_configs: self._client_sdks[config.database] = RedisClientSDK( redis_dsn=self.settings.build_redis_dsn(config.database), decode_responses=config.decode_responses, health_check_interval=config.health_check_interval, client_name=f"{self.client_name}", + with_health_check=use_health_check, ) + # NOTE: disables health check for all clients except the first + # reduces health check requests to Redis + use_health_check = False async def shutdown(self) -> None: await asyncio.gather(