From df1440d926a896ae20fde2a3db47815bf2ee890c Mon Sep 17 00:00:00 2001 From: Yro Boros Date: Tue, 24 Feb 2026 20:28:36 +1000 Subject: [PATCH] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5?= =?UTF-8?q?=D0=BD=D0=B8=D0=B5=20=D0=BF=D0=BB=D0=B0=D0=BD=D0=B8=D1=80=D0=BE?= =?UTF-8?q?=D0=B2=D1=89=D0=B8=D0=BA=D0=B0=20=D0=BF=D0=BE=20=D0=B7=D0=B0?= =?UTF-8?q?=D0=BF=D1=83=D1=81=D0=BA=D1=83=20=D0=BF=D0=B0=D1=80=D1=81=D0=B5?= =?UTF-8?q?=D1=80=D0=B0=20=D0=B2=2010=20=D0=B8=2011=20=D1=87=D0=B0=D1=81?= =?UTF-8?q?=D0=BE=D0=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- main.py | 34 +++++++++++++++++++++++++++++++++- 1 file changed, 33 insertions(+), 1 deletion(-) 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