ForcePilot/backend/package/yuxi/channel/cron/handler_registry.py
Kris 0dcc370819 feat(cron): 实现完整的定时任务调度模块
新增了从调度引擎、任务注册、状态追踪到结果投递的全套cron任务系统,支持cron表达式、一次性任务和周期任务,包含失败告警、任务持久化和运行日志功能
2026-05-21 10:24:54 +08:00

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"}