Files
R2R/py/core/providers/scheduler/apscheduler.py
T
Nolan Tremelling e7db62e6bd Add Scheduler and Postgres Vacuum (#2089)
* Add scheduler and vacuum

* Lint

* Refactor test workflow, add mock scheduler to tests

* 0 3 * * *

* Missing quote in toml

* Add maintenance service mock
2025-03-24 16:06:18 -07:00

38 lines
1.0 KiB
Python

import logging
from apscheduler.schedulers.asyncio import AsyncIOScheduler
from core.base import SchedulerConfig, SchedulerProvider
logger = logging.getLogger(__name__)
class APSchedulerProvider(SchedulerProvider):
"""Implementation using APScheduler"""
def __init__(self, config: SchedulerConfig):
super().__init__(config)
self.scheduler = AsyncIOScheduler()
async def add_job(self, func, trigger, **kwargs):
logger.info(
f"Adding job {func.__name__} with trigger {trigger} and kwargs {kwargs}"
)
self.scheduler.add_job(func, trigger, **kwargs)
async def start(self):
self.scheduler.start()
logger.info("Scheduler started")
async def shutdown(self):
if self.scheduler.running:
self.scheduler.shutdown()
logger.info("Scheduler shutdown")
async def __aenter__(self):
await self.start()
return self
async def __aexit__(self, exc_type, exc, tb):
await self.shutdown()