fix(utils): Switch throttle decorator to async (#23979)

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 <tcx4c70@gmail.com>
This commit is contained in:
tcx4c70 authored and GitHub committed 2026-04-24 14:39:45 +09:00
1 parent 9b577868c8
commit f6bd08c852
1 file changed
+3 -3
+3 -3
View File
@@ -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