Spaces:
Runtime error
Runtime error
File size: 2,069 Bytes
307cacc |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 |
from datetime import datetime
from typing import Optional
from apscheduler.schedulers.asyncio import AsyncIOScheduler
from apscheduler.triggers.cron import CronTrigger
from loguru import logger
from pytz import timezone
from ctp_slack_bot.core.config import settings
#from ctp_slack_bot.tasks.error_report import send_error_report
#from ctp_slack_bot.tasks.transcript_cleanup import cleanup_old_transcripts
def start_scheduler() -> AsyncIOScheduler:
"""
Start and configure the APScheduler instance.
Returns:
AsyncIOScheduler: Configured scheduler instance
"""
scheduler = AsyncIOScheduler(timezone=timezone(settings.SCHEDULER_TIMEZONE))
# Add jobs to the scheduler
# Daily error report at 7 AM
# scheduler.add_job(
# send_error_report,
# CronTrigger(hour=7, minute=0),
# id="daily_error_report",
# name="Daily Error Report",
# replace_existing=True,
# )
# Weekly transcript cleanup on Sundays at 1 AM
# 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: Optional[AsyncIOScheduler] = None) -> None:
"""
Shutdown the scheduler gracefully.
Args:
scheduler: The scheduler instance to shut down
"""
if scheduler is not None and scheduler.running:
logger.info("Shutting down scheduler")
scheduler.shutdown(wait=False)
logger.info("Scheduler shutdown complete")
|