freeleaps-service-hub/apps/content/scheduler/scheduler_manager.py
2025-02-07 08:13:59 +00:00

43 lines
1.7 KiB
Python
Executable File

from apscheduler.schedulers.asyncio import AsyncIOScheduler
from apscheduler.triggers.date import DateTrigger
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),
)
# Register cleanup_document_job as a one-time job
# This job is just one-time job for removing many unused documents
# Run already, now comment it out
# await init_lock(ScheduleJobLocker.CLEANUP_DOCUMENT_JOB_LOCKER)
# execution_time = datetime.now() + timedelta(
# seconds=60
# ) # Schedule to run 60 seconds from now
# scheduler.add_job(
# cleanup_document_job, # Job function
# trigger=DateTrigger(run_date=execution_time), # One-time trigger
# id="cleanup_document_one_time", # Optional: Give the job an ID
# )