""" Parser API - Точка входа приложения """ from contextlib import asynccontextmanager from fastapi import FastAPI import uvicorn from config import ( APP_TITLE, APP_DESCRIPTION, APP_VERSION, UVICORN_PORT, SCHEDULED_PARSER_1_HOUR, SCHEDULED_PARSER_1_MINUTE, SCHEDULED_PARSER_2_HOUR, SCHEDULED_PARSER_2_MINUTE ) from apscheduler.schedulers.asyncio import AsyncIOScheduler from parsers import scheduled_parser_1, scheduled_parser_2 from api import setup_routes # Инициализация планировщика scheduler = AsyncIOScheduler() @asynccontextmanager async def lifespan(app: FastAPI): """Управление жизненным циклом приложения""" # Startup scheduler.add_job(scheduled_parser_1, "cron", hour=SCHEDULED_PARSER_1_HOUR, minute=SCHEDULED_PARSER_1_MINUTE) scheduler.add_job(scheduled_parser_2, "cron", hour=SCHEDULED_PARSER_2_HOUR, minute=SCHEDULED_PARSER_2_MINUTE) scheduler.start() yield # Shutdown scheduler.shutdown() # Создание приложения FastAPI app = FastAPI( title=APP_TITLE, description=APP_DESCRIPTION, version=APP_VERSION, lifespan=lifespan ) # Настройка маршрутов setup_routes(app) if __name__ == "__main__": uvicorn.run("main:app", port=UVICORN_PORT, reload=True)