diff --git a/main.py b/main.py index fe09abb..db01691 100644 --- a/main.py +++ b/main.py @@ -1,6 +1,7 @@ from fastapi import FastAPI, Request, BackgroundTasks, Query from fastapi.middleware.cors import CORSMiddleware from pydantic import BaseModel +from apscheduler.schedulers.asyncio import AsyncIOScheduler import logging import subprocess import requests @@ -20,6 +21,9 @@ app = FastAPI(title="Parser API", description="API для запуска парсинга в базу данных", version="1.0") +# Инициализация планировщика +scheduler = AsyncIOScheduler() + # Настройка логгера logging.basicConfig(filename="app.log", level=logging.INFO, format="%(asctime)s - %(levelname)s - %(message)s") logger = logging.getLogger(__name__) @@ -377,7 +381,35 @@ def get_settings(): @app.post("/settings", summary="Метод сохранения настроек парсера") def set_settings(settings: sw.Source): return sw.update_source(settings) + +# Функции для автоматического запуска +def scheduled_parser_1(): + """Планировщик для первого парсера""" + print("Запуск планировщика парсера 1") + istochnik = "" # пустая строка = текущая дата + start_pars_one_istochnik(istochnik.split(".")) + +def scheduled_parser_2(): + """Планировщик для второго парсера""" + print("Запуск планировщика парсера 2") + start_pars_two_istochnik() + +@app.on_event("startup") +async def start_scheduler(): + """Запуск планировщика при старте приложения""" + # Парсер 1 - каждый день в 6:00 + scheduler.add_job(scheduled_parser_1, "cron", hour=10, minute=0) + + # Парсер 2 - каждый день в 7:00 + scheduler.add_job(scheduled_parser_2, "cron", hour=11, minute=0) + + scheduler.start() + print("Планировщик запущен: парсер 1 в 6:00, парсер 2 в 7:00") + +@app.on_event("shutdown") +async def stop_scheduler(): + """Остановка планировщика при выключении""" + scheduler.shutdown() -# Запуск сервера для теста # if __name__ == "__main__": # uvicorn.run("main:app", port=8001, reload=True) \ No newline at end of file