feat: connect router; add hourly scheduling
This commit is contained in:
parent
4b9b805632
commit
e02b250a51
2 changed files with 38 additions and 1 deletions
3
app.py
3
app.py
|
|
@ -211,3 +211,6 @@ app.include_router(msftRouter)
|
||||||
|
|
||||||
from modules.routes.routeSecurityGoogle import router as googleRouter
|
from modules.routes.routeSecurityGoogle import router as googleRouter
|
||||||
app.include_router(googleRouter)
|
app.include_router(googleRouter)
|
||||||
|
|
||||||
|
from modules.routes.routeJira import router as jiraRouter
|
||||||
|
app.include_router(jiraRouter)
|
||||||
|
|
@ -1,16 +1,50 @@
|
||||||
# Configure logger
|
# Configure logger
|
||||||
import logging
|
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.connectorTicketJira import ConnectorTicketJira
|
||||||
from modules.connectors.connectorSharepoint import ConnectorSharepoint
|
from modules.connectors.connectorSharepoint import ConnectorSharepoint
|
||||||
from modules.interfaces.interfaceTicketObjects import TicketSharepointSyncInterface
|
from modules.interfaces.interfaceTicketObjects import TicketSharepointSyncInterface
|
||||||
|
|
||||||
|
from apscheduler.schedulers.asyncio import AsyncIOScheduler
|
||||||
|
from apscheduler.triggers.cron import CronTrigger
|
||||||
|
|
||||||
|
|
||||||
logger = logging.getLogger(__name__)
|
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(
|
router = APIRouter(
|
||||||
prefix="/api/jira",
|
prefix="/api/jira",
|
||||||
tags=["JIRA Sync"],
|
tags=["JIRA Sync"],
|
||||||
|
lifespan=router_lifespan,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue