diff --git a/config/.env-template b/config/.env-template index e5ae175..2f96d75 100644 --- a/config/.env-template +++ b/config/.env-template @@ -11,5 +11,4 @@ OAA_CFG__SWAGGER__PWD=P@ssw0rd! OAA_CFG__REDIS__HOST=localhost OAA_CFG__REDIS__PORT=6379 -OAA_CFG__REDIS__DB=0 OAA_CFG__REDIS__PWD=P@ssw0rd! \ No newline at end of file diff --git a/config/config.py b/config/config.py index 17b30bd..b82aaec 100644 --- a/config/config.py +++ b/config/config.py @@ -32,6 +32,7 @@ class PrefixConfig(BaseModel): swagger: str = "/docs" api_v1: str = "/api/v1" tg_v1: str = api_v1 + "/tg" + ping: str = "/ping" class TokenConfig(BaseModel): @@ -42,7 +43,6 @@ class TokenConfig(BaseModel): class RedisConfig(BaseModel): host: str = "localhost" port: int = 6379 - db: int = 0 pwd: str | None = None diff --git a/main.py b/main.py index 7d6908e..28d69d6 100644 --- a/main.py +++ b/main.py @@ -11,7 +11,7 @@ from contextlib import asynccontextmanager @asynccontextmanager async def lifespan(app: FastAPI): yield - await db_helper.dispose() + log.info("main APP stopped") main_app = FastAPI( diff --git a/redis_db/__init__.py b/redis_db/__init__.py index 8550491..7bdcf66 100644 --- a/redis_db/__init__.py +++ b/redis_db/__init__.py @@ -1,6 +1,7 @@ -from .crud import get_value, set_value +from .crud import get_value, set_value, ping __all__ = [ "get_value", "set_value", + "ping", ] diff --git a/redis_db/crud.py b/redis_db/crud.py index 62d0a6e..d191f26 100644 --- a/redis_db/crud.py +++ b/redis_db/crud.py @@ -1,19 +1,25 @@ import logging as log -import asyncio -from r_helper import RedisManager +from .r_helper import RedisManager + + +async def ping(): + async with RedisManager() as redis_connect: + if redis_connect: + result = await redis_connect.client.ping() + log.info("Ping - %s", result) + return result async def set_value(key, value): async with RedisManager() as redis_connect: - await redis_connect.client.set(key, value) - log.info("Set %s = %s", key, value) + if redis_connect: + await redis_connect.client.set(key, value) + log.info("Set %s = %s", key, value) async def get_value(key): async with RedisManager() as redis_connect: - value = await redis_connect.client.get(key) - log.info("Get %s = %s", key, value) - - -asyncio.run(set_value("q", "sefesf")) -asyncio.run(get_value("q")) + if redis_connect: + value = await redis_connect.client.get(key) + log.info("Get %s = %s", key, value) + return value diff --git a/redis_db/r_helper.py b/redis_db/r_helper.py index 62e816c..8281dcd 100644 --- a/redis_db/r_helper.py +++ b/redis_db/r_helper.py @@ -16,15 +16,14 @@ class RedisManager: async def __aenter__(self): self.client = Redis(**self.connect_params) - try: - await self.client.ping() # Проверяем, что соединение успешно + await self.client.ping() log.info("connected to Redis") return self except ConnectionError: log.warning("failed to connect to Redis") self.client = None - raise ConnectionError + return None async def __aexit__(self, exc_type, exc_val, exc_tb): if self.client: diff --git a/routers/__init__.py b/routers/__init__.py index 50f0317..3a66426 100644 --- a/routers/__init__.py +++ b/routers/__init__.py @@ -1,7 +1,7 @@ from fastapi import APIRouter from .swagger import router as swagger_router - +from .ping import router as ping_router from .tg_send import router as tg_send_router from config import conf @@ -12,6 +12,11 @@ router.include_router( swagger_router, prefix=conf.prefix.swagger, ) +router.include_router( + ping_router, + prefix=conf.prefix.ping, + tags=["Ping"], +) router.include_router( tg_send_router, prefix=conf.prefix.tg_v1, diff --git a/routers/ping.py b/routers/ping.py new file mode 100644 index 0000000..35fac8c --- /dev/null +++ b/routers/ping.py @@ -0,0 +1,16 @@ +from fastapi import APIRouter +from redis_db import ping + +router = APIRouter() + + +@router.get("") +async def ping_post(): + redis_ping = await ping() + return {"ok": True, "redis": redis_ping} + + +@router.post("") +async def ping_get(): + redis_ping = await ping() + return {"ok": True, "redis": redis_ping}