feat(chat): 增强任务管理和取消机制

添加新的任务管理方法来更好地处理异步任务的生命周期:
- 新增 cancel_processing_task、remove_processing_task 等方法
- 在流循环清理时自动取消关联的 chatter 处理任务
- 添加活跃任务统计信息到管理器统计中
- 改进 prompt 构建时的任务类型检查和错误处理
This commit is contained in:
Windpicker-owo
2025-10-03 14:17:29 +08:00
parent 73aa29c4d5
commit 7617f85b92
3 changed files with 96 additions and 7 deletions

View File

@@ -393,9 +393,15 @@ class Prompt:
task_timeout = task_timeouts.get(task_name, 2.0) # 默认2秒
try:
result = await asyncio.wait_for(task, timeout=task_timeout)
results.append(result)
logger.debug(f"构建任务{task_name}完成 ({task_timeout}s)")
# 确保任务是一个协程对象
if asyncio.iscoroutine(task):
result = await asyncio.wait_for(task, timeout=task_timeout)
results.append(result)
logger.debug(f"构建任务{task_name}完成 ({task_timeout}s)")
else:
logger.warning(f"任务{task_name}不是协程对象,类型: {type(task)},跳过处理")
default_result = self._get_default_result_for_task(task_name)
results.append(default_result)
except asyncio.TimeoutError:
logger.warning(f"构建任务{task_name}超时 ({task_timeout}s),使用默认值")
# 为超时任务提供默认值