add ping and refactor

This commit is contained in:
s.mostryukov 2024-10-09 11:28:57 +03:00
parent 5de3ac2210
commit 8c078e837c
8 changed files with 44 additions and 18 deletions

View File

@ -11,5 +11,4 @@ OAA_CFG__SWAGGER__PWD=P@ssw0rd!
OAA_CFG__REDIS__HOST=localhost OAA_CFG__REDIS__HOST=localhost
OAA_CFG__REDIS__PORT=6379 OAA_CFG__REDIS__PORT=6379
OAA_CFG__REDIS__DB=0
OAA_CFG__REDIS__PWD=P@ssw0rd! OAA_CFG__REDIS__PWD=P@ssw0rd!

View File

@ -32,6 +32,7 @@ class PrefixConfig(BaseModel):
swagger: str = "/docs" swagger: str = "/docs"
api_v1: str = "/api/v1" api_v1: str = "/api/v1"
tg_v1: str = api_v1 + "/tg" tg_v1: str = api_v1 + "/tg"
ping: str = "/ping"
class TokenConfig(BaseModel): class TokenConfig(BaseModel):
@ -42,7 +43,6 @@ class TokenConfig(BaseModel):
class RedisConfig(BaseModel): class RedisConfig(BaseModel):
host: str = "localhost" host: str = "localhost"
port: int = 6379 port: int = 6379
db: int = 0
pwd: str | None = None pwd: str | None = None

View File

@ -11,7 +11,7 @@ from contextlib import asynccontextmanager
@asynccontextmanager @asynccontextmanager
async def lifespan(app: FastAPI): async def lifespan(app: FastAPI):
yield yield
await db_helper.dispose() log.info("main APP stopped")
main_app = FastAPI( main_app = FastAPI(

View File

@ -1,6 +1,7 @@
from .crud import get_value, set_value from .crud import get_value, set_value, ping
__all__ = [ __all__ = [
"get_value", "get_value",
"set_value", "set_value",
"ping",
] ]

View File

@ -1,19 +1,25 @@
import logging as log 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 def set_value(key, value):
async with RedisManager() as redis_connect: async with RedisManager() as redis_connect:
await redis_connect.client.set(key, value) if redis_connect:
log.info("Set %s = %s", key, value) await redis_connect.client.set(key, value)
log.info("Set %s = %s", key, value)
async def get_value(key): async def get_value(key):
async with RedisManager() as redis_connect: async with RedisManager() as redis_connect:
value = await redis_connect.client.get(key) if redis_connect:
log.info("Get %s = %s", key, value) value = await redis_connect.client.get(key)
log.info("Get %s = %s", key, value)
return value
asyncio.run(set_value("q", "sefesf"))
asyncio.run(get_value("q"))

View File

@ -16,15 +16,14 @@ class RedisManager:
async def __aenter__(self): async def __aenter__(self):
self.client = Redis(**self.connect_params) self.client = Redis(**self.connect_params)
try: try:
await self.client.ping() # Проверяем, что соединение успешно await self.client.ping()
log.info("connected to Redis") log.info("connected to Redis")
return self return self
except ConnectionError: except ConnectionError:
log.warning("failed to connect to Redis") log.warning("failed to connect to Redis")
self.client = None self.client = None
raise ConnectionError return None
async def __aexit__(self, exc_type, exc_val, exc_tb): async def __aexit__(self, exc_type, exc_val, exc_tb):
if self.client: if self.client:

View File

@ -1,7 +1,7 @@
from fastapi import APIRouter from fastapi import APIRouter
from .swagger import router as swagger_router from .swagger import router as swagger_router
from .ping import router as ping_router
from .tg_send import router as tg_send_router from .tg_send import router as tg_send_router
from config import conf from config import conf
@ -12,6 +12,11 @@ router.include_router(
swagger_router, swagger_router,
prefix=conf.prefix.swagger, prefix=conf.prefix.swagger,
) )
router.include_router(
ping_router,
prefix=conf.prefix.ping,
tags=["Ping"],
)
router.include_router( router.include_router(
tg_send_router, tg_send_router,
prefix=conf.prefix.tg_v1, prefix=conf.prefix.tg_v1,

16
routers/ping.py Normal file
View File

@ -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}