44 lines
1.2 KiB
Python
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)
|
|
|