23 lines
772 B
Python
23 lines
772 B
Python
from __future__ import annotations
|
|
import logging
|
|
from apscheduler.schedulers.asyncio import AsyncIOScheduler
|
|
from apscheduler.triggers.interval import IntervalTrigger
|
|
from src.infrastructure.vault import JwtKeyStore
|
|
|
|
logger = logging.getLogger(__name__)
|
|
|
|
|
|
def start_jwt_keys_scheduler(store: JwtKeyStore, *, refresh_seconds: int = 3600) -> AsyncIOScheduler:
|
|
scheduler = AsyncIOScheduler()
|
|
scheduler.add_job(
|
|
store.refresh,
|
|
trigger=IntervalTrigger(seconds=refresh_seconds),
|
|
id="jwt_keys_refresh",
|
|
replace_existing=True,
|
|
max_instances=1,
|
|
coalesce=True,
|
|
misfire_grace_time=60,
|
|
)
|
|
scheduler.start()
|
|
logger.info("JWT keys scheduler started (interval=%s seconds)", refresh_seconds)
|
|
return scheduler |