fix #1047
This commit is contained in:
parent
a4b7ca824e
commit
3e031c6191
@ -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):
|
||||||
|
@ -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:
|
||||||
|
Loading…
x
Reference in New Issue
Block a user