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, 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" # 同步链式事件