fish_async_task.types 源代码

"""
类型定义模块

定义任务管理器相关的类型别名和类型定义。
"""

from typing import Any, Callable, Dict, Literal, Optional, Tuple, TypedDict, Union

# 类型别名
# TaskTuple: (task_id, func, args, kwargs)
# - task_id: 任务ID(字符串)
# - func: 要执行的任务函数
# - args: 任务函数的位置参数(元组)
# - kwargs: 任务函数的关键字参数(字典)
TaskTuple = Tuple[str, Callable[..., Any], Tuple[Any, ...], Dict[str, Any]]
TaskStatus = Literal["pending", "running", "completed", "failed"]


[文档] class TaskStatusDict(TypedDict, total=False): """ 任务状态字典类型定义 所有字段都是可选的(total=False),因为不同状态的任务包含的字段不同: - pending: status, submit_time - running: status, submit_time, start_time - completed: status, submit_time, start_time, end_time, result - failed: status, submit_time, start_time, end_time, error 所有可选字段都使用 Optional 注解,明确标识该字段可能为 None。 """ status: Optional[TaskStatus] # pending, running, completed, failed submit_time: Optional[float] # 任务提交时间(Unix时间戳) start_time: Optional[float] # 任务开始执行时间(Unix时间戳) end_time: Optional[float] # 任务结束时间(Unix时间戳) result: Optional[Any] # 任务执行结果(仅completed状态) error: Optional[str] # 错误信息(仅failed状态) worker_id: Optional[str] # 执行任务的工作线程ID(性能优化新增)
# 性能优化相关类型定义
[文档] class ShardedTaskStatusDict(TypedDict): """分片任务状态字典,包含分片索引信息""" shard_index: int # 分片索引 task_status: TaskStatusDict # 任务状态数据
[文档] class BatchedUpdate(TypedDict): """批量更新项""" task_id: str status: TaskStatusDict
[文档] class ScalingMetrics(TypedDict): """自适应扩展指标""" current_workers: int # 当前工作线程数 avg_task_time: float # 平均任务执行时间(秒) cpu_usage: Optional[float] # CPU 使用率(0-1),如果 psutil 不可用则为 None last_scale_up_time: float # 上次扩展时间(Unix时间戳) last_scale_down_time: float # 上次缩减时间(Unix时间戳) queue_size: int # 当前队列大小