freeleaps-service-hub/apps/content/scheduler/scheduler_manager.py
2025-01-31 07:03:27 +00:00

32 lines
1.3 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.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):
await init_lock(ScheduleJobLocker.REFRESH_SHAREPOINT_CONTENT_JOB_LOCKER)
scheduler.add_job(refresh_sharepoint_content_job, "interval", seconds=(3600 + 3))
# Register cleanup_document_job as a one-time job
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
)