добавил атостарт всех сайтов
All checks were successful
continuous-integration/drone/push Build is passing

This commit is contained in:
2026-05-16 12:41:54 +10:00
parent 656c8d9d9a
commit 770445feaa
4 changed files with 55 additions and 2 deletions

28
main.py
View File

@@ -4,6 +4,7 @@ Parser API - Точка входа приложения
from contextlib import asynccontextmanager
from fastapi import FastAPI
import uvicorn
from work_parser import get_true_sources
from config import (
APP_TITLE,
@@ -16,10 +17,11 @@ from config import (
SCHEDULED_PARSER_2_MINUTE
)
from apscheduler.schedulers.asyncio import AsyncIOScheduler
from parsers import scheduled_parser_1, scheduled_parser_2
from parsers import scheduled_parser_1, scheduled_parser_2, scheduled_parser_universal
from api import setup_routes
# Инициализация планировщика
scheduler = AsyncIOScheduler()
@@ -30,12 +32,36 @@ 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)
# Получаем все источники и распределяем их равномерно по 24 часам
sources = get_true_sources().items()
num_sources = len(sources)
if num_sources > 0:
total_minutes_per_day = 24 * 60
minutes_per_source = total_minutes_per_day / num_sources
for idx, (url, promt) in enumerate(sources):
total_minutes = int(idx * minutes_per_source)
scheduled_hour = total_minutes // 60
scheduled_minute = total_minutes % 60
# Для универсального парсера нужно передавать url и promt как аргументы
scheduler.add_job(
scheduled_parser_universal,
"cron",
hour=scheduled_hour,
minute=scheduled_minute,
args=[url, promt]
)
scheduler.start()
yield
# Shutdown
scheduler.shutdown()
# Создание приложения FastAPI
app = FastAPI(
title=APP_TITLE,