Files
boss_dp/worker/tasks/registry.py
ddrwode fdafeae1f5 haha
2026-03-06 11:19:17 +08:00

44 lines
1.2 KiB
Python

# -*- coding: utf-8 -*-
"""
Task handler registry for worker runtime.
"""
from __future__ import annotations
import logging
from typing import Dict, Optional, Type
from worker.tasks.base import BaseTaskHandler
logger = logging.getLogger("worker.tasks.registry")
_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__} missing task_type")
_registry[instance.task_type] = instance
logger.info("Registered task handler: %s -> %s", instance.task_type, handler_cls.__name__)
def get_handler(task_type: str) -> Optional[BaseTaskHandler]:
return _registry.get(task_type)
def list_handlers() -> list[str]:
return list(_registry.keys())
def register_all_handlers() -> None:
from worker.tasks.boss_recruit import BossRecruitHandler
from worker.tasks.boss_reply import BossReplyHandler
from worker.tasks.check_login import CheckLoginHandler
from worker.tasks.sync_filters import SyncFiltersHandler
register_handler(BossRecruitHandler)
register_handler(BossReplyHandler)
register_handler(CheckLoginHandler)
register_handler(SyncFiltersHandler)