добавил атостарт всех сайтов
All checks were successful
continuous-integration/drone/push Build is passing
All checks were successful
continuous-integration/drone/push Build is passing
This commit is contained in:
28
main.py
28
main.py
@@ -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,
|
||||
|
||||
Reference in New Issue
Block a user