LiKenun's picture
W.I.P.
9fd6e20
raw
history blame
1.98 kB
from apscheduler.schedulers.asyncio import AsyncIOScheduler
from apscheduler.triggers.cron import CronTrigger
from datetime import datetime
from dependency_injector.wiring import inject, Provide
from loguru import logger
from pytz import timezone
from typing import Optional
from ctp_slack_bot.containers import Container
@inject
def start_scheduler(container: Container) -> AsyncIOScheduler:
"""
Start and configure the APScheduler instance.
Returns:
AsyncIOScheduler: Configured scheduler instance
"""
settings = container.settings() if container else Provide[Container.settings]
zone = settings.SCHEDULER_TIMEZONE
scheduler = AsyncIOScheduler(timezone=timezone(zone))
# Add jobs to the scheduler.
# scheduler.add_job(
# send_error_report,
# CronTrigger(hour=7, minute=0),
# id="daily_error_report",
# name="Daily Error Report",
# replace_existing=True,
# )
# scheduler.add_job(
# cleanup_old_transcripts,
# CronTrigger(day_of_week="sun", hour=1, minute=0),
# id="weekly_transcript_cleanup",
# name="Weekly Transcript Cleanup",
# replace_existing=True,
# )
# Start the scheduler.
scheduler.start()
logger.info("Scheduler started with timezone: {}", settings.SCHEDULER_TIMEZONE)
# logger.info("Next run for error report: {}",
# scheduler.get_job("daily_error_report").next_run_time)
# logger.info("Next run for transcript cleanup: {}",
# scheduler.get_job("weekly_transcript_cleanup").next_run_time)
return scheduler
def stop_scheduler(scheduler: AsyncIOScheduler) -> None:
"""
Shutdown the scheduler gracefully.
Args:
scheduler: The scheduler instance to shut down
"""
if scheduler.running:
logger.info("Shutting down scheduler")
scheduler.shutdown(wait=False)
logger.info("Scheduler shutdown complete")