26 lines
721 B
Python
26 lines
721 B
Python
import logging
|
|
from collections.abc import Callable, Awaitable
|
|
|
|
logger = logging.getLogger(__name__)
|
|
|
|
type CronHandler = Callable[..., Awaitable[dict]]
|
|
|
|
_handler_registry: dict[str, CronHandler] = {}
|
|
|
|
|
|
def register_handler(name: str, handler: CronHandler) -> None:
|
|
if name in _handler_registry:
|
|
logger.warning("CronHandler '%s' already registered, overwriting", name)
|
|
_handler_registry[name] = handler
|
|
|
|
|
|
def resolve_handler(name: str) -> CronHandler:
|
|
return _handler_registry.get(name, _noop_handler)
|
|
|
|
|
|
def list_registered() -> list[str]:
|
|
return list(_handler_registry.keys())
|
|
|
|
|
|
async def _noop_handler(**kwargs) -> dict:
|
|
return {"message": "noop handler, job needs reassignment after reload"} |