fix: reschedule APScheduler job immediately when status check interval is updated
Interval was read once at startup — changing it via API had no effect until server restart. Now calls reschedule_status_checks() after saving.
This commit is contained in:
@@ -8,6 +8,7 @@ from sqlalchemy.ext.asyncio import AsyncSession
|
||||
|
||||
from app.api.deps import get_current_user
|
||||
from app.core.config import settings
|
||||
from app.core.scheduler import reschedule_status_checks
|
||||
from app.db.database import AsyncSessionLocal, get_db
|
||||
from app.db.models import Node, PendingDevice, ScanRun
|
||||
from app.schemas.nodes import NodeCreate
|
||||
@@ -110,6 +111,7 @@ async def update_scan_config(payload: ScanConfig, _: str = Depends(get_current_u
|
||||
try:
|
||||
settings.scanner_ranges = payload.ranges
|
||||
settings.save_overrides()
|
||||
reschedule_status_checks(payload.interval_seconds)
|
||||
return payload
|
||||
except Exception as exc:
|
||||
raise HTTPException(status_code=500, detail=str(exc)) from exc
|
||||
|
||||
@@ -53,5 +53,11 @@ def start_scheduler() -> None:
|
||||
logger.info("Scheduler started — status checks every %ds", settings.status_checker_interval)
|
||||
|
||||
|
||||
def reschedule_status_checks(interval_seconds: int) -> None:
|
||||
"""Update the status check interval on the running scheduler."""
|
||||
scheduler.reschedule_job("status_checks", trigger="interval", seconds=interval_seconds)
|
||||
logger.info("Status checks rescheduled to every %ds", interval_seconds)
|
||||
|
||||
|
||||
def stop_scheduler() -> None:
|
||||
scheduler.shutdown(wait=False)
|
||||
|
||||
Reference in New Issue
Block a user