Добавление планировщика по запуску парсера в 10 и 11 часов
This commit is contained in:
34
main.py
34
main.py
@@ -1,6 +1,7 @@
|
|||||||
from fastapi import FastAPI, Request, BackgroundTasks, Query
|
from fastapi import FastAPI, Request, BackgroundTasks, Query
|
||||||
from fastapi.middleware.cors import CORSMiddleware
|
from fastapi.middleware.cors import CORSMiddleware
|
||||||
from pydantic import BaseModel
|
from pydantic import BaseModel
|
||||||
|
from apscheduler.schedulers.asyncio import AsyncIOScheduler
|
||||||
import logging
|
import logging
|
||||||
import subprocess
|
import subprocess
|
||||||
import requests
|
import requests
|
||||||
@@ -20,6 +21,9 @@ app = FastAPI(title="Parser API",
|
|||||||
description="API для запуска парсинга в базу данных",
|
description="API для запуска парсинга в базу данных",
|
||||||
version="1.0")
|
version="1.0")
|
||||||
|
|
||||||
|
# Инициализация планировщика
|
||||||
|
scheduler = AsyncIOScheduler()
|
||||||
|
|
||||||
# Настройка логгера
|
# Настройка логгера
|
||||||
logging.basicConfig(filename="app.log", level=logging.INFO, format="%(asctime)s - %(levelname)s - %(message)s")
|
logging.basicConfig(filename="app.log", level=logging.INFO, format="%(asctime)s - %(levelname)s - %(message)s")
|
||||||
logger = logging.getLogger(__name__)
|
logger = logging.getLogger(__name__)
|
||||||
@@ -378,6 +382,34 @@ def get_settings():
|
|||||||
def set_settings(settings: sw.Source):
|
def set_settings(settings: sw.Source):
|
||||||
return sw.update_source(settings)
|
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__":
|
# if __name__ == "__main__":
|
||||||
# uvicorn.run("main:app", port=8001, reload=True)
|
# uvicorn.run("main:app", port=8001, reload=True)
|
||||||
Reference in New Issue
Block a user