| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263 |
- from redis import Redis
- from redis.asyncio import Redis as AsyncRedis
- from redis.asyncio.sentinel import Sentinel as AsyncSentinel
- from redis.sentinel import Sentinel
- from alien_gateway.config import settings
- def _sentinel_kwargs() -> dict:
- kwargs = {}
- if settings.REDIS_SENTINEL_USERNAME:
- kwargs["username"] = settings.REDIS_SENTINEL_USERNAME
- if settings.REDIS_SENTINEL_PASSWORD:
- kwargs["password"] = settings.REDIS_SENTINEL_PASSWORD
- return kwargs
- def get_sentinel_client() -> Sentinel:
- return Sentinel(
- settings.REDIS_SENTINEL_NODES,
- socket_timeout=0.5,
- sentinel_kwargs=_sentinel_kwargs(),
- )
- def get_async_sentinel_client() -> AsyncSentinel:
- return AsyncSentinel(
- settings.REDIS_SENTINEL_NODES,
- socket_timeout=0.5,
- sentinel_kwargs=_sentinel_kwargs(),
- )
- def get_redis_master() -> Redis:
- return get_sentinel_client().master_for(
- service_name=settings.REDIS_MASTER_NAME,
- password=settings.REDIS_PASSWORD or None,
- db=settings.REDIS_DB,
- )
- def get_redis_slave() -> Redis:
- return get_sentinel_client().slave_for(
- service_name=settings.REDIS_MASTER_NAME,
- password=settings.REDIS_PASSWORD or None,
- db=settings.REDIS_DB,
- )
- def get_async_redis_master() -> AsyncRedis:
- return get_async_sentinel_client().master_for(
- service_name=settings.REDIS_MASTER_NAME,
- password=settings.REDIS_PASSWORD or None,
- db=settings.REDIS_DB,
- )
- def get_async_redis_slave() -> AsyncRedis:
- return get_async_sentinel_client().slave_for(
- service_name=settings.REDIS_MASTER_NAME,
- password=settings.REDIS_PASSWORD or None,
- db=settings.REDIS_DB,
- )
|