fix: guard scheduler against double-start and unguarded reschedule

This commit is contained in:
Pouzor
2026-03-31 00:03:01 +02:00
parent e9152df17a
commit 1f884fd1db
+6
View File
@@ -47,6 +47,8 @@ async def _run_status_checks() -> None:
def start_scheduler() -> None: def start_scheduler() -> None:
global scheduler global scheduler
if scheduler.running:
scheduler.shutdown(wait=False)
scheduler = AsyncIOScheduler() scheduler = AsyncIOScheduler()
scheduler.add_job(_run_status_checks, "interval", seconds=settings.status_checker_interval, id="status_checks") scheduler.add_job(_run_status_checks, "interval", seconds=settings.status_checker_interval, id="status_checks")
scheduler.start() scheduler.start()
@@ -55,9 +57,13 @@ def start_scheduler() -> None:
def reschedule_status_checks(interval_seconds: int) -> None: def reschedule_status_checks(interval_seconds: int) -> None:
"""Update the status check interval on the running scheduler.""" """Update the status check interval on the running scheduler."""
if not scheduler.running:
logger.warning("Scheduler not running, skipping reschedule")
return
scheduler.reschedule_job("status_checks", trigger="interval", seconds=interval_seconds) scheduler.reschedule_job("status_checks", trigger="interval", seconds=interval_seconds)
logger.info("Status checks rescheduled to every %ds", interval_seconds) logger.info("Status checks rescheduled to every %ds", interval_seconds)
def stop_scheduler() -> None: def stop_scheduler() -> None:
if scheduler.running:
scheduler.shutdown(wait=False) scheduler.shutdown(wait=False)