mirror of
https://github.com/jxxghp/MoviePilot.git
synced 2026-09-05 07:27:15 +08:00
fix(runtime): 收敛跨线程任务提交终态 (#6446)
This commit is contained in:
@@ -3,7 +3,7 @@ from concurrent.futures import Future
|
||||
from dataclasses import replace
|
||||
from unittest.mock import AsyncMock, Mock, patch
|
||||
|
||||
from app.agent import MoviePilotAgent
|
||||
from app.agent.orchestrator import MoviePilotAgent
|
||||
from app.agent.orchestrator import AgentManagerQueueFullError
|
||||
from app.agent.tools.impl.ask_user_choice import (
|
||||
AskUserChoiceTool,
|
||||
@@ -12,13 +12,14 @@ from app.agent.tools.impl.ask_user_choice import (
|
||||
from app.agent.tools.impl.send_message import SendMessageTool
|
||||
from app.chain.message import MessageChain
|
||||
from app.runtime.config import global_vars, settings
|
||||
from app.db import SessionFactory
|
||||
from app.db.session import SessionFactory
|
||||
from app.db.oper.message import MessageOper
|
||||
from app.db.models.message import Message
|
||||
from app.application.messaging.agent import AgentInteractionOption, agent_interaction_manager
|
||||
from app.application.messaging.interaction import InteractionContext
|
||||
from app.application.messaging.media import media_interaction_manager
|
||||
from app.schemas.types import NotificationChannel, MessageType
|
||||
from app.runtime.tasks import TaskRegistry
|
||||
|
||||
|
||||
def _clear_messages() -> None:
|
||||
@@ -61,6 +62,23 @@ def test_agent_session_clear_uses_owned_threadsafe_submission():
|
||||
}
|
||||
|
||||
|
||||
def test_agent_session_clear_handles_closed_task_registry():
|
||||
"""宿主已停止接收任务时,同步消息清理链应记录拒绝而不是泄漏协程。"""
|
||||
registry = TaskRegistry()
|
||||
asyncio.run(registry.shutdown(timeout_seconds=0.01))
|
||||
manager = Mock(clear_session=AsyncMock())
|
||||
|
||||
with patch.object(global_vars, "CURRENT_EVENT_LOOP", _running_loop_stub()), patch(
|
||||
"app.chain.message.get_running_agent_manager", return_value=manager
|
||||
), patch("app.chain.message.get_task_registry", return_value=registry), patch(
|
||||
"app.chain.message.logger"
|
||||
) as logger:
|
||||
MessageChain._schedule_agent_session_clear("session-1", "10001")
|
||||
|
||||
logger.warning.assert_called_once()
|
||||
assert "正在关闭" in logger.warning.call_args.args[0]
|
||||
|
||||
|
||||
def test_remote_session_clear_reuses_owned_clear_scheduler():
|
||||
"""远程清理命令应复用唯一 Agent 会话清理入口。"""
|
||||
chain = MessageChain()
|
||||
|
||||
Reference in New Issue
Block a user