diff --git a/app/general/general_interceptors.py b/app/general/general_interceptors.py index 2769475..733730d 100644 --- a/app/general/general_interceptors.py +++ b/app/general/general_interceptors.py @@ -1,4 +1,4 @@ -from typing import List +from typing import List, Dict class GeneralInterceptor(): @@ -33,11 +33,13 @@ class GeneralInterceptor(): self.after_delete = after_delete -_general_interceptors: List[GeneralInterceptor] = [] +_general_interceptors: Dict[str, GeneralInterceptor] = [] def add_general_interceptor(interceptor: GeneralInterceptor): - _general_interceptors.append(interceptor) + target_interceptor_list = _general_interceptors.get(interceptor.module, []) + target_interceptor_list.append(interceptor) + _general_interceptors[interceptor.module] = target_interceptor_list async def invoke_interceptor(method: str, module: str, **kwargs): @@ -45,7 +47,7 @@ async def invoke_interceptor(method: str, module: str, **kwargs): module = module[1:] if module.endswith('/'): module = module[:-1] - match_interceptors = [item for item in _general_interceptors if item.module == module] + match_interceptors = _general_interceptors.get(module, []) for item in match_interceptors: interceptor_method = getattr(item, method, None) # 使用 getattr 获取方法 if interceptor_method and callable(interceptor_method):