# -*- 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)