Initial MVP for QA asset backend
This commit is contained in:
35
hy_qa_asset_backend/backend/app/services/scheduler.py
Normal file
35
hy_qa_asset_backend/backend/app/services/scheduler.py
Normal file
@@ -0,0 +1,35 @@
|
||||
from apscheduler.schedulers.background import BackgroundScheduler
|
||||
|
||||
from app import models
|
||||
from app.config import get_settings
|
||||
from app.database import SessionLocal
|
||||
from app.services.task_runner import TaskRunner
|
||||
from app.utils.time_utils import split_cron
|
||||
|
||||
|
||||
scheduler = BackgroundScheduler()
|
||||
|
||||
|
||||
def start_scheduler() -> None:
|
||||
settings = get_settings()
|
||||
if scheduler.running:
|
||||
return
|
||||
cron_kwargs = split_cron(settings.schedule_cron)
|
||||
scheduler.configure(timezone=settings.schedule_timezone)
|
||||
scheduler.add_job(
|
||||
scheduled_scan,
|
||||
"cron",
|
||||
id="scheduled_feishu_scan",
|
||||
replace_existing=True,
|
||||
**cron_kwargs,
|
||||
)
|
||||
scheduler.start()
|
||||
|
||||
|
||||
def scheduled_scan() -> None:
|
||||
import asyncio
|
||||
|
||||
with SessionLocal() as db:
|
||||
runner = TaskRunner()
|
||||
asyncio.run(runner.run(db, task_type=models.TaskType.scheduled_scan))
|
||||
|
||||
Reference in New Issue
Block a user