scheduler.py 905 B

123456789101112131415161718192021222324252627282930313233343536373839
  1. from abc import abstractmethod
  2. from .base import Provider, ProviderConfig
  3. class SchedulerConfig(ProviderConfig):
  4. """Configuration for scheduler provider"""
  5. provider: str = "apscheduler"
  6. def validate_config(self):
  7. if self.provider not in self.supported_providers:
  8. raise ValueError(
  9. f"Scheduler provider {self.provider} is not supported."
  10. )
  11. @property
  12. def supported_providers(self) -> list[str]:
  13. return ["apscheduler"]
  14. class SchedulerProvider(Provider):
  15. """Base class for scheduler providers"""
  16. def __init__(self, config: SchedulerConfig):
  17. super().__init__(config)
  18. self.config = config
  19. @abstractmethod
  20. async def add_job(self, func, trigger, **kwargs):
  21. pass
  22. @abstractmethod
  23. async def start(self):
  24. pass
  25. @abstractmethod
  26. async def shutdown(self):
  27. pass