From 5687f0c594ddd251ff24b25e8ad1ee11ada730e8 Mon Sep 17 00:00:00 2001 From: Adam Tao Date: Wed, 22 Apr 2026 12:15:56 +0800 Subject: [PATCH] fix(utils): Switch throttle decorator to async After migration to async db operations, the throttle decorator also needs to support async. Since the decorator is only used for async funcs now, we can just switch it to async instead of supporting sync and async at the same time. Signed-off-by: Adam Tao --- backend/open_webui/utils/misc.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/backend/open_webui/utils/misc.py b/backend/open_webui/utils/misc.py index 670a94b512..5af84dd5cd 100644 --- a/backend/open_webui/utils/misc.py +++ b/backend/open_webui/utils/misc.py @@ -843,9 +843,9 @@ def throttle(interval: float = 10.0): last_calls = {} lock = threading.Lock() - def wrapper(*args, **kwargs): + async def wrapper(*args, **kwargs): if interval is None: - return func(*args, **kwargs) + return await func(*args, **kwargs) key = (args, freeze(kwargs)) now = time.time() @@ -855,7 +855,7 @@ def throttle(interval: float = 10.0): if now - last_calls.get(key, 0) < interval: return None last_calls[key] = now - return func(*args, **kwargs) + return await func(*args, **kwargs) return wrapper