30 lines
639 B
Python
30 lines
639 B
Python
"""External service adapters for System Health."""
|
|
|
|
from collections.abc import Callable
|
|
|
|
import redis
|
|
|
|
from app.config import settings
|
|
|
|
|
|
RedisFactory = Callable[[], redis.Redis]
|
|
|
|
|
|
def default_redis_factory() -> redis.Redis:
|
|
return redis.Redis.from_url(
|
|
settings.redis_url,
|
|
socket_connect_timeout=2,
|
|
socket_timeout=2,
|
|
)
|
|
|
|
|
|
class RedisHealthAdapter:
|
|
def __init__(self, factory: RedisFactory | None = None):
|
|
self._factory = factory or default_redis_factory
|
|
|
|
def ping(self) -> bool:
|
|
try:
|
|
return bool(self._factory().ping())
|
|
except Exception:
|
|
return False
|