начало сап системы и помойму всё
This commit is contained in:
51
main.py
51
main.py
@@ -1,8 +1,12 @@
|
||||
from fastapi import FastAPI
|
||||
from instance.configdb import init_postgresql, init_mongodb, close_connections
|
||||
from app.routes import user_router, subscription_router
|
||||
from apscheduler.schedulers.asyncio import AsyncIOScheduler
|
||||
from apscheduler.triggers.cron import CronTrigger
|
||||
from app.routes import user_router, subscription_router, sup_router
|
||||
from app.services.db_manager import DatabaseManager
|
||||
from instance.configdb import get_postgres_session
|
||||
from app.services.mongo_rep import MongoDBRepository
|
||||
from app.services.xui_rep import PanelInteraction
|
||||
import logging
|
||||
|
||||
logging.basicConfig(level=logging.INFO)
|
||||
@@ -11,6 +15,47 @@ logger = logging.getLogger(__name__)
|
||||
app = FastAPI()
|
||||
|
||||
database_manager = DatabaseManager(session_generator=get_postgres_session)
|
||||
mongo_repo = MongoDBRepository()
|
||||
async def delete_depleted_clients_task():
|
||||
"""
|
||||
Удаляет исчерпанных клиентов на всех серверах из MongoDB.
|
||||
"""
|
||||
try:
|
||||
# Получаем список серверов из MongoDB
|
||||
servers = await mongo_repo.list_servers()
|
||||
if not servers:
|
||||
logger.warning("Список серверов пуст. Задача пропущена.")
|
||||
return
|
||||
|
||||
# Проходим по каждому серверу и вызываем delete_depleted_clients
|
||||
for server in servers:
|
||||
base_url = server.get("base_url")
|
||||
login_data = server.get("login_data")
|
||||
certificate = server.get("certificate")
|
||||
|
||||
if not base_url or not login_data:
|
||||
logger.error(f"Пропуск сервера из-за отсутствия данных: {server}")
|
||||
continue
|
||||
|
||||
# Создаём экземпляр PanelInteraction
|
||||
panel = PanelInteraction(
|
||||
base_url=base_url,
|
||||
login_data=login_data,
|
||||
logger=logger,
|
||||
certificate=certificate
|
||||
)
|
||||
|
||||
# Выполняем удаление исчерпанных клиентов
|
||||
response = await panel.delete_depleted_clients()
|
||||
if response:
|
||||
logger.info(f"Удаление клиентов завершено успешно для сервера: {base_url}")
|
||||
else:
|
||||
logger.warning(f"Не удалось удалить клиентов для сервера: {base_url}")
|
||||
|
||||
except Exception as e:
|
||||
logger.error(f"Ошибка при выполнении задачи delete_depleted_clients: {e}")
|
||||
|
||||
scheduler = AsyncIOScheduler()
|
||||
|
||||
@app.on_event("startup")
|
||||
async def startup():
|
||||
@@ -18,6 +63,8 @@ async def startup():
|
||||
Инициализация подключения к базам данных.
|
||||
"""
|
||||
try:
|
||||
scheduler.add_job(delete_depleted_clients_task, CronTrigger(hour=23, minute=59))
|
||||
scheduler.start()
|
||||
logger.info("Инициализация PostgreSQL...")
|
||||
await init_postgresql()
|
||||
logger.info("PostgreSQL успешно инициализирован.")
|
||||
@@ -44,7 +91,7 @@ async def shutdown():
|
||||
app.include_router(user_router, prefix="/api")
|
||||
#app.include_router(payment_router, prefix="/api")
|
||||
app.include_router(subscription_router, prefix="/api")
|
||||
|
||||
app.include_router(sup_router, prefix="/api")
|
||||
@app.get("/")
|
||||
def read_root():
|
||||
return {"message": "FastAPI приложение работает!"}
|
||||
|
||||
Reference in New Issue
Block a user