From 0f273c1088c429defd01c401c956ba4e18fb40bd Mon Sep 17 00:00:00 2001 From: martsforever Date: Wed, 29 Oct 2025 17:51:49 +0800 Subject: [PATCH] feat: optimize interceptors --- app/general/general_interceptors.py | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) 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):