freeleaps-service-hub/apps/content/scheduler/scheduler_manager.py

40 lines
1.4 KiB
Python
Executable File

from apscheduler.schedulers.asyncio import AsyncIOScheduler
from apscheduler.triggers.date import DateTrigger
from apscheduler.triggers.cron import CronTrigger
from datetime import datetime, timedelta
from scheduler.refresh_sharepoint_content_job import (
refresh_sharepoint_content_job,
)
from scheduler.backfill_photo_id_job import backfill_photo_id_job
from scheduler.cleanup_document_job import cleanup_document_job
from common.log.log_utils import log_entry_exit_async
from scheduler.constants import ScheduleJobLocker
from scheduler.schedule_job_locker import init_lock
@log_entry_exit_async
async def create_scheduler() -> AsyncIOScheduler:
scheduler: AsyncIOScheduler = AsyncIOScheduler()
await register_job(scheduler)
return scheduler
@log_entry_exit_async
async def register_job(scheduler: AsyncIOScheduler):
await init_lock(ScheduleJobLocker.REFRESH_SHAREPOINT_CONTENT_JOB_LOCKER)
scheduler.add_job(refresh_sharepoint_content_job, "interval", seconds=(3600 + 3))
await init_lock(ScheduleJobLocker.BACKFILL_PHOTO_ID_JOB_LOCKER)
scheduler.add_job(
backfill_photo_id_job,
"date",
run_date=datetime(2025, 2, 7, 20, 0, 0),
)
await init_lock(ScheduleJobLocker.CLEANUP_DOCUMENT_JOB_LOCKER)
scheduler.add_job(
cleanup_document_job,
trigger=CronTrigger(hour=2, minute=0), # Runs every day at 2:00 AM
id="cleanup_document_daily",
)