From 935a82fa587faf380d067dc847862367d1fc8149 Mon Sep 17 00:00:00 2001 From: Windpicker-owo <3431391539@qq.com> Date: Thu, 28 Aug 2025 16:57:25 +0800 Subject: [PATCH] =?UTF-8?q?=E5=BC=95=E5=85=A5lock=E9=98=B2=E6=AD=A2?= =?UTF-8?q?=E5=90=8C=E4=B8=80=E4=B8=AA=E4=BA=8B=E4=BB=B6=E5=90=8C=E6=97=B6?= =?UTF-8?q?=E8=A7=A6=E5=8F=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/plugin_system/core/event_manager.py | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/plugin_system/core/event_manager.py b/src/plugin_system/core/event_manager.py index ea3d04a70..a9ffc0d62 100644 --- a/src/plugin_system/core/event_manager.py +++ b/src/plugin_system/core/event_manager.py @@ -2,7 +2,7 @@ 事件管理器 - 实现Event和EventHandler的单例管理 提供统一的事件注册、管理和触发接口 """ - +import asyncio from typing import Dict, Type, List, Optional, Any, Union from threading import Lock @@ -39,6 +39,7 @@ class EventManager: self._event_handlers: Dict[str, Type[BaseEventHandler]] = {} self._pending_subscriptions: Dict[str, List[str]] = {} # 缓存失败的订阅 self._initialized = True + self.event_handle_lock = asyncio.Lock() logger.info("EventManager 单例初始化完成") def register_event(self, event_name: Union[EventType, str]) -> bool: @@ -281,8 +282,8 @@ class EventManager: if event is None: logger.error(f"事件 {event_name} 不存在,无法触发") return None - - return await event.activate(params) + async with self.event_handle_lock: + return await event.activate(params) def init_default_events(self) -> None: """初始化默认事件"""