backend/med_backend/services/redis/dependency.py

27 lines
732 B
Python

from typing import AsyncGenerator
from redis.asyncio import Redis
from starlette.requests import Request
async def get_redis_pool(
request: Request,
) -> AsyncGenerator[Redis, None]: # pragma: no cover
"""
Returns connection pool.
You can use it like this:
>>> from redis.asyncio import ConnectionPool, Redis
>>>
>>> async def handler(redis_pool: ConnectionPool = Depends(get_redis_pool)):
>>> async with Redis(connection_pool=redis_pool) as redis:
>>> await redis.get('key')
I use pools so you don't acquire connection till the end of the handler.
:param request: current request.
:returns: redis connection pool.
"""
return request.app.state.redis_pool