This commit is contained in:
jxxghp 2023-11-03 07:28:34 +08:00
parent a4b7ca824e
commit 3e031c6191
2 changed files with 14 additions and 12 deletions

View File

@ -1,4 +1,5 @@
from queue import Queue, Empty from queue import Queue, Empty
from typing import Dict, Any
from app.log import logger from app.log import logger
from app.utils.singleton import Singleton from app.utils.singleton import Singleton
@ -14,7 +15,7 @@ class EventManager(metaclass=Singleton):
# 事件队列 # 事件队列
self._eventQueue = Queue() self._eventQueue = Queue()
# 事件响应函数字典 # 事件响应函数字典
self._handlers = {} self._handlers: Dict[str, Dict[str, Any]] = {}
# 已禁用的事件响应 # 已禁用的事件响应
self._disabled_handlers = [] self._disabled_handlers = []
@ -24,12 +25,13 @@ class EventManager(metaclass=Singleton):
""" """
try: try:
event = self._eventQueue.get(block=True, timeout=1) event = self._eventQueue.get(block=True, timeout=1)
handlerList = self._handlers.get(event.event_type) or [] handlers = self._handlers.get(event.event_type) or {}
if handlerList: if handlers:
# 去除掉被禁用的事件响应 # 去除掉被禁用的事件响应
handlerList = [handler for handler in handlerList handlerList = [handler for handler in handlers.values()
if handler.__qualname__.split(".")[0] not in self._disabled_handlers] if handler.__qualname__.split(".")[0] not in self._disabled_handlers]
return event, handlerList return event, handlerList
return event, []
except Empty: except Empty:
return None, [] return None, []
@ -44,12 +46,13 @@ class EventManager(metaclass=Singleton):
注册事件处理 注册事件处理
""" """
try: try:
handlerList = self._handlers[etype.value] handlers = self._handlers[etype.value]
except KeyError: except KeyError:
handlerList = [] handlers = {}
self._handlers[etype.value] = handlerList self._handlers[etype.value] = handlers
if handler not in handlerList: if handler.__qualname__ in handlers:
handlerList.append(handler) self._handlers[etype.value].pop(handler.__qualname__)
self._handlers[etype.value][handler.__qualname__] = handler
logger.debug(f"Event Registed{etype.value} - {handler}") logger.debug(f"Event Registed{etype.value} - {handler}")
def disable_events_hander(self, class_name: str): def disable_events_hander(self, class_name: str):

View File

@ -18,7 +18,6 @@ class ModuleHelper:
""" """
submodules: list = [] submodules: list = []
importlib.invalidate_caches()
packages = importlib.import_module(package_path) packages = importlib.import_module(package_path)
for importer, package_name, _ in pkgutil.iter_modules(packages.__path__): for importer, package_name, _ in pkgutil.iter_modules(packages.__path__):
try: try: