from fastapi import FastAPI from loguru import logger from contextlib import asynccontextmanager from app.core.logging import setup_logging from app.core.config import settings from app.api.v1.endpoints import auth from app.api.v1.endpoints import counters # Вызываем настройку логирования в самом начале setup_logging() # --- НОВЫЙ, СОВРЕМЕННЫЙ СПОСОБ ОБРАБОТКИ СОБЫТИЙ --- @asynccontextmanager async def lifespan(app: FastAPI): # Этот код выполняется один раз ПРИ СТАРТЕ приложения logger.info("Application startup...") logger.info(f"Log level is set to: {settings.LOG_LEVEL}") logger.info("Service is ready to accept requests.") yield # В этот момент приложение работает # Этот код выполняется один раз ПРИ ОСТАНОВКЕ приложения logger.info("Application shutdown...") # Создаем главный объект приложения FastAPI и подключаем lifespan app = FastAPI( title="Marquiz Metrica Connector", version="1.0.0", description="Микросервис для автоматизации настройки Яндекс.Метрики для квизов.", lifespan=lifespan # <-- Подключаем наш новый обработчик ) # Подключаем роутеры app.include_router(auth.router, prefix="/api/v1/auth", tags=["Authentication"]) app.include_router(counters.router, prefix="/api/v1/counters", tags=["Counters"]) @app.get("/", tags=["Health Check"]) def health_check(): """Эндпоинт для проверки работоспособности сервиса.""" logger.info("Health check endpoint was requested.") return {"status": "ok", "message": "Welcome to Marquiz Metrica Connector!"} logger.info("FastAPI app instance created and configured.")