71 lines
2.1 KiB
Python
71 lines
2.1 KiB
Python
"""
|
|
Task Scheduler Package
|
|
Modular, pluggable scheduler for ALwrity tasks.
|
|
"""
|
|
|
|
from .core.scheduler import TaskScheduler
|
|
from .core.executor_interface import TaskExecutor, TaskExecutionResult
|
|
from .core.exception_handler import (
|
|
SchedulerExceptionHandler, SchedulerException, SchedulerErrorType, SchedulerErrorSeverity,
|
|
TaskExecutionError, DatabaseError, TaskLoaderError, SchedulerConfigError
|
|
)
|
|
from .executors.monitoring_task_executor import MonitoringTaskExecutor
|
|
from .executors.oauth_token_monitoring_executor import OAuthTokenMonitoringExecutor
|
|
from .utils.task_loader import load_due_monitoring_tasks
|
|
from .utils.oauth_token_task_loader import load_due_oauth_token_monitoring_tasks
|
|
|
|
# Global scheduler instance (initialized on first access)
|
|
_scheduler_instance: TaskScheduler = None
|
|
|
|
|
|
def get_scheduler() -> TaskScheduler:
|
|
"""
|
|
Get global scheduler instance (singleton pattern).
|
|
|
|
Returns:
|
|
TaskScheduler instance
|
|
"""
|
|
global _scheduler_instance
|
|
if _scheduler_instance is None:
|
|
_scheduler_instance = TaskScheduler(
|
|
check_interval_minutes=15,
|
|
max_concurrent_executions=10
|
|
)
|
|
|
|
# Register monitoring task executor
|
|
monitoring_executor = MonitoringTaskExecutor()
|
|
_scheduler_instance.register_executor(
|
|
'monitoring_task',
|
|
monitoring_executor,
|
|
load_due_monitoring_tasks
|
|
)
|
|
|
|
# Register OAuth token monitoring executor
|
|
oauth_token_executor = OAuthTokenMonitoringExecutor()
|
|
_scheduler_instance.register_executor(
|
|
'oauth_token_monitoring',
|
|
oauth_token_executor,
|
|
load_due_oauth_token_monitoring_tasks
|
|
)
|
|
|
|
return _scheduler_instance
|
|
|
|
|
|
__all__ = [
|
|
'TaskScheduler',
|
|
'TaskExecutor',
|
|
'TaskExecutionResult',
|
|
'MonitoringTaskExecutor',
|
|
'OAuthTokenMonitoringExecutor',
|
|
'get_scheduler',
|
|
# Exception handling
|
|
'SchedulerExceptionHandler',
|
|
'SchedulerException',
|
|
'SchedulerErrorType',
|
|
'SchedulerErrorSeverity',
|
|
'TaskExecutionError',
|
|
'DatabaseError',
|
|
'TaskLoaderError',
|
|
'SchedulerConfigError'
|
|
]
|