From 3e6b6458bb7ad6a251ea9773b3302c0ed0d6f717 Mon Sep 17 00:00:00 2001 From: Windpicker-owo <3431391539@qq.com> Date: Fri, 7 Nov 2025 21:15:13 +0800 Subject: [PATCH 1/2] =?UTF-8?q?refactor(scheduler):=20=E7=A7=BB=E9=99=A4?= =?UTF-8?q?=E4=B8=8D=E5=BF=85=E8=A6=81=E7=9A=84=20schedule=20=E9=94=81?= =?UTF-8?q?=E7=AE=A1=E7=90=86=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/chat/message_manager/scheduler_dispatcher.py | 13 ++----------- 1 file changed, 2 insertions(+), 11 deletions(-) diff --git a/src/chat/message_manager/scheduler_dispatcher.py b/src/chat/message_manager/scheduler_dispatcher.py index a13008e26..232620934 100644 --- a/src/chat/message_manager/scheduler_dispatcher.py +++ b/src/chat/message_manager/scheduler_dispatcher.py @@ -32,10 +32,7 @@ class SchedulerDispatcher: def __init__(self): # 追踪每个流的 schedule_id self.stream_schedules: dict[str, str] = {} # stream_id -> schedule_id - - # 用于保护 schedule 创建/删除的锁,避免竞态条件 - self.schedule_locks: dict[str, asyncio.Lock] = {} # stream_id -> Lock - + # Chatter 管理器 self.chatter_manager: ChatterManager | None = None @@ -84,12 +81,6 @@ class SchedulerDispatcher: """设置 Chatter 管理器""" self.chatter_manager = chatter_manager logger.debug(f"设置 Chatter 管理器: {chatter_manager.__class__.__name__}") - - def _get_schedule_lock(self, stream_id: str) -> asyncio.Lock: - """获取流的 schedule 锁""" - if stream_id not in self.schedule_locks: - self.schedule_locks[stream_id] = asyncio.Lock() - return self.schedule_locks[stream_id] async def on_message_received(self, stream_id: str) -> None: """消息接收时的处理逻辑 @@ -121,7 +112,7 @@ class SchedulerDispatcher: should_interrupt = await self._check_interruption(stream_id, context) if should_interrupt: - # 移除旧 schedule 并创建新的(内部有锁保护) + # 移除旧 schedule 并创建新的 await self._cancel_and_recreate_schedule(stream_id, context) logger.debug(f"⚡ 打断成功: 流={stream_id[:8]}..., 已重新创建 schedule") else: From ff5d14042c631354197ac3b6cef6dc81c99c0cc6 Mon Sep 17 00:00:00 2001 From: Windpicker-owo <3431391539@qq.com> Date: Fri, 7 Nov 2025 21:16:58 +0800 Subject: [PATCH 2/2] =?UTF-8?q?=E4=BF=AE=E5=A4=8D:=20=E6=9B=B4=E6=96=B0?= =?UTF-8?q?=E6=B6=88=E6=81=AF=E5=88=86=E5=8F=91=E7=AE=A1=E7=90=86=E5=99=A8?= =?UTF-8?q?=E4=BB=A5=E6=8F=90=E9=AB=98=E6=80=A7=E8=83=BD=E5=92=8C=E7=A8=B3?= =?UTF-8?q?=E5=AE=9A=E6=80=A7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../message_manager/scheduler_dispatcher.py | 18 +----------------- 1 file changed, 1 insertion(+), 17 deletions(-) diff --git a/src/chat/message_manager/scheduler_dispatcher.py b/src/chat/message_manager/scheduler_dispatcher.py index da215706e..e8c93136b 100644 --- a/src/chat/message_manager/scheduler_dispatcher.py +++ b/src/chat/message_manager/scheduler_dispatcher.py @@ -32,17 +32,10 @@ class SchedulerDispatcher: def __init__(self): # 追踪每个流的 schedule_id self.stream_schedules: dict[str, str] = {} # stream_id -> schedule_id -<<<<<<< HEAD -======= - - # 用于保护 schedule 创建/删除的锁,避免竞态条件 - self.schedule_locks: dict[str, asyncio.Lock] = {} # stream_id -> Lock - ->>>>>>> b0ee26652efd8d03c2e407575b8c5eea78f6afec # Chatter 管理器 self.chatter_manager: ChatterManager | None = None - + # 统计信息 self.stats = { "total_schedules_created": 0, @@ -88,15 +81,6 @@ class SchedulerDispatcher: """设置 Chatter 管理器""" self.chatter_manager = chatter_manager logger.debug(f"设置 Chatter 管理器: {chatter_manager.__class__.__name__}") -<<<<<<< HEAD -======= - - def _get_schedule_lock(self, stream_id: str) -> asyncio.Lock: - """获取流的 schedule 锁""" - if stream_id not in self.schedule_locks: - self.schedule_locks[stream_id] = asyncio.Lock() - return self.schedule_locks[stream_id] ->>>>>>> b0ee26652efd8d03c2e407575b8c5eea78f6afec async def on_message_received(self, stream_id: str) -> None: """消息接收时的处理逻辑