46 lines
1.9 KiB
Python
46 lines
1.9 KiB
Python
|
|
"""external_systems 模块的定时任务 handler 注册入口。
|
|||
|
|
|
|||
|
|
本模块是 external_systems 限界上下文接入 scheduler 限界上下文的唯一登记点,
|
|||
|
|
对齐 scheduler 上下文设计方案 §14.3 的"业务域 container 主动注册"模式。
|
|||
|
|
|
|||
|
|
与 ``infrastructure/container.py`` 同级,遵循 external_systems 的分层约定:
|
|||
|
|
装配逻辑集中在 ``infrastructure/``,包根不出现装配代码。
|
|||
|
|
|
|||
|
|
对外暴露:
|
|||
|
|
|
|||
|
|
- ``register_scheduler_handlers(registry)``:业务模块注册函数,由 worker
|
|||
|
|
启动钩子(``services/run_worker.py`` 的 ``_worker_startup``)统一调用。
|
|||
|
|
内部实例化本模块的 handler 并调用 ``registry.register(handler)``。
|
|||
|
|
|
|||
|
|
边界规范:
|
|||
|
|
- 本模块是 external_systems 接入 scheduler 的**唯一装配点**
|
|||
|
|
- handler 的依赖(如 ``session_factory``)在函数内部构造,不暴露给装配层
|
|||
|
|
- 新增 handler 时,在本函数内追加 ``registry.register(...)`` 即可,无需改
|
|||
|
|
``run_worker.py``(前提:本模块已登记在 ``_BUSINESS_HANDLER_REGISTRARS``)
|
|||
|
|
"""
|
|||
|
|
|
|||
|
|
from __future__ import annotations
|
|||
|
|
|
|||
|
|
from yuxi.scheduler.framework.runtime import HandlerRegistry
|
|||
|
|
from yuxi.storage.postgres.manager import pg_manager
|
|||
|
|
|
|||
|
|
__all__ = ["register_scheduler_handlers"]
|
|||
|
|
|
|||
|
|
|
|||
|
|
def register_scheduler_handlers(registry: HandlerRegistry) -> None:
|
|||
|
|
"""向 scheduler 注册 external_systems 模块的定时任务 handler。
|
|||
|
|
|
|||
|
|
由 worker 启动钩子在装配阶段统一调用。新增 handler 时在此函数内追加
|
|||
|
|
``registry.register(...)`` 即可。
|
|||
|
|
|
|||
|
|
Args:
|
|||
|
|
registry: worker 进程级 handler 注册表。
|
|||
|
|
"""
|
|||
|
|
session_factory = pg_manager.get_async_session_context
|
|||
|
|
|
|||
|
|
# 在此追加 external_systems 的定时任务 handler 注册
|
|||
|
|
# registry.register(
|
|||
|
|
# XxxHandler(session_factory=session_factory),
|
|||
|
|
# )
|
|||
|
|
_ = session_factory # 暂无 handler,占位避免未使用告警
|