From 835e0b4d5d8a09ac2b2d0ad2ac03f0310003d58a Mon Sep 17 00:00:00 2001 From: InfinityPacer <160988576+InfinityPacer@users.noreply.github.com> Date: Mon, 30 Sep 2024 18:10:42 +0800 Subject: [PATCH 1/2] fix(event): prevent error calls --- app/core/event.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/app/core/event.py b/app/core/event.py index 80e46c0e..7b87b569 100644 --- a/app/core/event.py +++ b/app/core/event.py @@ -114,16 +114,16 @@ class EventManager(metaclass=Singleton): :return: 返回是否存在可用的处理器 """ if isinstance(etype, ChainEventType): - handlers = self.__chain_subscribers.get(etype, []) + handlers = self.__chain_subscribers.get(etype, {}) return any( self.__is_handler_enabled(handler) - for _, handler in handlers + for _, handler in handlers.values() ) else: - handlers = self.__broadcast_subscribers.get(etype, []) + handlers = self.__broadcast_subscribers.get(etype, {}) return any( self.__is_handler_enabled(handler) - for handler in handlers + for handler in handlers.values() ) def send_event(self, etype: Union[EventType, ChainEventType], data: Optional[Dict] = None, From 0ca42236d651d4496f38424b795f55dfe42d4389 Mon Sep 17 00:00:00 2001 From: InfinityPacer <160988576+InfinityPacer@users.noreply.github.com> Date: Mon, 30 Sep 2024 19:19:51 +0800 Subject: [PATCH 2/2] feat(event): add ModuleReload event type --- app/core/module.py | 3 +++ app/schemas/types.py | 2 ++ 2 files changed, 5 insertions(+) diff --git a/app/core/module.py b/app/core/module.py index ce7a7c4f..e16a6b33 100644 --- a/app/core/module.py +++ b/app/core/module.py @@ -2,8 +2,10 @@ import traceback from typing import Generator, Optional, Tuple, Any from app.core.config import settings +from app.core.event import eventmanager from app.helper.module import ModuleHelper from app.log import logger +from app.schemas.types import EventType from app.utils.object import ObjectUtils from app.utils.singleton import Singleton @@ -67,6 +69,7 @@ class ModuleManager(metaclass=Singleton): """ self.stop() self.load_modules() + eventmanager.send_event(etype=EventType.ModuleReload, data={}) def test(self, modleid: str) -> Tuple[bool, str]: """ diff --git a/app/schemas/types.py b/app/schemas/types.py index da891378..ebea3ad5 100644 --- a/app/schemas/types.py +++ b/app/schemas/types.py @@ -56,6 +56,8 @@ class EventType(Enum): SystemError = "system.error" # 刮削元数据 MetadataScrape = "metadata.scrape" + # 模块需要重载 + ModuleReload = "module.reload" # 同步链式事件