feat: connect router; add hourly scheduling

This commit is contained in:
Christopher Gondek 2025-09-05 20:51:10 +02:00
parent 4b9b805632
commit e02b250a51
2 changed files with 38 additions and 1 deletions

3
app.py
View file

@ -211,3 +211,6 @@ app.include_router(msftRouter)
from modules.routes.routeSecurityGoogle import router as googleRouter
app.include_router(googleRouter)
from modules.routes.routeJira import router as jiraRouter
app.include_router(jiraRouter)

View file

@ -1,16 +1,50 @@
# Configure logger
import logging
from fastapi import APIRouter
from fastapi import APIRouter, FastAPI
from contextlib import asynccontextmanager
from zoneinfo import ZoneInfo
from modules.connectors.connectorTicketJira import ConnectorTicketJira
from modules.connectors.connectorSharepoint import ConnectorSharepoint
from modules.interfaces.interfaceTicketObjects import TicketSharepointSyncInterface
from apscheduler.schedulers.asyncio import AsyncIOScheduler
from apscheduler.triggers.cron import CronTrigger
logger = logging.getLogger(__name__)
scheduler = AsyncIOScheduler(timezone=ZoneInfo("Europe/Zurich"))
@asynccontextmanager
async def router_lifespan(app: FastAPI):
# start scheduler when this router is mounted
scheduler.add_job(
perform_sync_jira_delta_group,
CronTrigger(minute="0"), # run at the top of every hour
id="jira_delta_group_sync",
replace_existing=True,
coalesce=True,
max_instances=1,
misfire_grace_time=1800,
)
scheduler.start()
logger.info("APScheduler started (jira_delta_group_sync hourly)")
try:
yield
finally:
if scheduler.running:
scheduler.shutdown(wait=False)
logger.info("APScheduler stopped")
router = APIRouter(
prefix="/api/jira",
tags=["JIRA Sync"],
lifespan=router_lifespan,
)