Spaces:
Runtime error
Runtime error
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 | |
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") | |