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__PORT=6379
OAA_CFG__REDIS__DB=0
OAA_CFG__REDIS__PWD=P@ssw0rd!

View File

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

View File

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

View File

@ -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",
]

View File

@ -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:
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:
if 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"))
return value

View File

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

View File

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

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}