qwen_agent/utils/cancel_manager.py
2026-03-16 22:22:39 +08:00

34 lines
987 B
Python

import asyncio
import logging
from typing import Dict
logger = logging.getLogger('app')
# 全局取消注册表: session_id -> asyncio.Event
_cancel_registry: Dict[str, asyncio.Event] = {}
def register_cancel_event(session_id: str) -> asyncio.Event:
"""注册一个取消事件"""
event = asyncio.Event()
_cancel_registry[session_id] = event
logger.debug(f"Cancel event registered for session_id={session_id}")
return event
def trigger_cancel(session_id: str) -> bool:
"""触发取消事件"""
event = _cancel_registry.get(session_id)
if event:
event.set()
logger.info(f"Cancel triggered for session_id={session_id}")
return True
logger.warning(f"No active session found for session_id={session_id}")
return False
def unregister_cancel_event(session_id: str) -> None:
"""清理取消事件"""
_cancel_registry.pop(session_id, None)
logger.debug(f"Cancel event unregistered for session_id={session_id}")