throttler fix

This commit is contained in:
C committed 2026-01-04 12:12:09 -08:00
1 parent 535826fce6
commit 3e21b904a2
1 file changed
+11 -7
+11 -7
View File
@@ -1,19 +1,24 @@
import asyncio
from asyncio_throttle import Throttler as AsyncThrottler
class GlobalThrottler:
_instance = None
_lock = asyncio.Lock()
def __init__(self, rate_limit: int = 500, period: int = 60) -> None:
if not hasattr(self, '_initialized'):
if not hasattr(self, "_initialized"):
self.rate_limit = rate_limit
self.period = period
self.throttler = AsyncThrottler(rate_limit=self.rate_limit, period=self.period)
self.throttler = AsyncThrottler(
rate_limit=self.rate_limit, period=self.period
)
self._initialized = True
@classmethod
async def get_instance(cls, rate_limit: int = 500, period: int = 60) -> 'GlobalThrottler':
async def get_instance(
cls, rate_limit: int = 500, period: int = 60
) -> "GlobalThrottler":
async with cls._lock:
if not cls._instance:
cls._instance = cls(rate_limit, period)
@@ -22,12 +27,11 @@ class GlobalThrottler:
async def acquire(self):
await self.throttler.acquire()
def release(self):
self.throttler.release()
async def __aenter__(self):
await self.acquire()
return self
async def __aexit__(self, exc_type, exc_val, exc_tb):
self.release()
# asyncio_throttle.Throttler doesn't have a release() method
# It automatically manages rate limiting via acquire()
pass