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
2026-04-24 14:39:45 +09:00
committed by GitHub
parent 9b577868c8
commit f6bd08c852
+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