from __future__ import annotations from datetime import datetime from apscheduler.schedulers.background import BackgroundScheduler from apscheduler.triggers.interval import IntervalTrigger from app.config import settings from app.scheduler.jobs import poll_isolarcloud_job, refresh_aer_plans_job def build_scheduler() -> BackgroundScheduler: scheduler = BackgroundScheduler() scheduler.add_job( poll_isolarcloud_job, trigger=IntervalTrigger(minutes=settings.isolarcloud_poll_interval_minutes), id="poll_isolarcloud", next_run_time=datetime.now(), # run once immediately on startup max_instances=1, coalesce=True, ) scheduler.add_job( refresh_aer_plans_job, trigger=IntervalTrigger(hours=settings.aer_refresh_interval_hours), id="refresh_aer_plans", next_run_time=datetime.now(), max_instances=1, coalesce=True, ) return scheduler