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") | |