Files
parser/main.py
Игорь Бандурист 25f2c09064
All checks were successful
continuous-integration/drone/push Build is passing
сделал ревью системы
2026-04-28 22:13:47 +10:00

55 lines
1.3 KiB
Python

"""
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)