order and api and more

This commit is contained in:
2025-04-17 00:09:16 -04:00
parent 593e8960b7
commit 21408af48c
31 changed files with 1924 additions and 542 deletions

View File

@@ -2,7 +2,7 @@ from typing import Callable, Dict, Any
from apscheduler.schedulers.asyncio import AsyncIOScheduler
from apscheduler.triggers.interval import IntervalTrigger
import logging
from app.services.service_registry import ServiceRegistry
from apscheduler.schedulers.base import SchedulerNotRunningError
logger = logging.getLogger(__name__)
@@ -10,7 +10,7 @@ class BaseScheduler:
def __init__(self):
self.scheduler = AsyncIOScheduler()
self.jobs: Dict[str, Any] = {}
ServiceRegistry.register(self.__class__.__name__, self)
self._is_running = False
async def schedule_task(
self,
@@ -46,16 +46,20 @@ class BaseScheduler:
def start(self) -> None:
"""Start the scheduler"""
self.scheduler.start()
logger.info("Scheduler started")
if not self._is_running:
self.scheduler.start()
self._is_running = True
logger.info("Scheduler started")
async def shutdown(self) -> None:
"""Shutdown the scheduler"""
try:
self.scheduler.shutdown()
logger.info("Scheduler stopped")
except AttributeError as e:
if "'NoneType' object has no attribute 'call_soon_threadsafe'" in str(e):
logger.warning("Event loop already closed, skipping scheduler shutdown")
else:
if self._is_running:
try:
self.scheduler.shutdown()
self._is_running = False
logger.info("Scheduler stopped")
except SchedulerNotRunningError:
logger.warning("Scheduler was already stopped")
except Exception as e:
logger.error(f"Error shutting down scheduler: {str(e)}")
raise