52 lines
1.3 KiB
Python
52 lines
1.3 KiB
Python
# -*- coding: utf-8 -*-
|
||
"""
|
||
任务处理器基类。
|
||
所有具体任务(如 BOSS 招聘)都继承此类,实现 execute 方法。
|
||
"""
|
||
from __future__ import annotations
|
||
|
||
import logging
|
||
from abc import ABC, abstractmethod
|
||
from typing import Any, Callable, Coroutine, Dict, Optional
|
||
|
||
|
||
class BaseTaskHandler(ABC):
|
||
"""
|
||
任务处理器基类。
|
||
|
||
子类需实现:
|
||
execute(task_id, params, progress_callback) -> result
|
||
|
||
progress_callback 是一个异步函数:
|
||
await progress_callback(task_id, "当前进度描述")
|
||
"""
|
||
|
||
# 子类覆盖,声明处理哪个 task_type
|
||
task_type: str = ""
|
||
|
||
def __init__(self) -> None:
|
||
self.logger = logging.getLogger(f"worker.tasks.{self.task_type or self.__class__.__name__}")
|
||
|
||
@abstractmethod
|
||
async def execute(
|
||
self,
|
||
task_id: str,
|
||
params: Dict[str, Any],
|
||
progress_cb: Callable[[str, str], Coroutine],
|
||
) -> Any:
|
||
"""
|
||
执行任务。
|
||
|
||
Args:
|
||
task_id: 任务 ID
|
||
params: 任务参数
|
||
progress_cb: 进度上报回调 async def(task_id, progress_text)
|
||
|
||
Returns:
|
||
任务结果(可序列化为 JSON)
|
||
|
||
Raises:
|
||
Exception: 执行失败时抛出异常
|
||
"""
|
||
...
|