Files
boss_dp/worker/tasks/registry.py
Your Name 51ae0756e0 哈哈
2026-02-12 17:10:05 +08:00

47 lines
1.5 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# -*- coding: utf-8 -*-
"""
任务处理器注册表。
Worker 启动时注册所有可用的 handler收到任务时按 task_type 查找对应 handler。
"""
from __future__ import annotations
import logging
from typing import Dict, Optional, Type
from worker.tasks.base import BaseTaskHandler
logger = logging.getLogger("worker.tasks.registry")
# task_type → handler 实例
_registry: Dict[str, BaseTaskHandler] = {}
def register_handler(handler_cls: Type[BaseTaskHandler]) -> None:
"""注册一个任务处理器类(自动实例化)。"""
instance = handler_cls()
if not instance.task_type:
raise ValueError(f"{handler_cls.__name__} 未设置 task_type")
_registry[instance.task_type] = instance
logger.info("注册任务处理器: %s%s", instance.task_type, handler_cls.__name__)
def get_handler(task_type: str) -> Optional[BaseTaskHandler]:
"""根据 task_type 获取对应的处理器实例。"""
return _registry.get(task_type)
def list_handlers() -> list[str]:
"""列出所有已注册的 task_type。"""
return list(_registry.keys())
def register_all_handlers() -> None:
"""注册所有内置任务处理器。在此函数中 import 并注册。"""
from worker.tasks.boss_recruit import BossRecruitHandler
from worker.tasks.check_login import CheckLoginHandler
register_handler(BossRecruitHandler)
register_handler(CheckLoginHandler)
# 未来扩展:在此处添加新的 handler
# from worker.tasks.xxx import XxxHandler
# register_handler(XxxHandler)