From 64eb8525b30f168d31ea42ac9328c8ded4f879fb Mon Sep 17 00:00:00 2001 From: cfytrok Date: Tue, 12 Jul 2022 15:47:35 +0300 Subject: [PATCH] Improved sleep cycle in acquire func --- asyncio_throttle/throttler.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/asyncio_throttle/throttler.py b/asyncio_throttle/throttler.py index b4a59ef..688f427 100644 --- a/asyncio_throttle/throttler.py +++ b/asyncio_throttle/throttler.py @@ -5,10 +5,9 @@ class Throttler: - def __init__(self, rate_limit: int, period=1.0, retry_interval=0.01): + def __init__(self, rate_limit: int, period=1.0): self.rate_limit = rate_limit self.period = period - self.retry_interval = retry_interval self._task_logs: Deque[float] = deque() @@ -25,7 +24,8 @@ async def acquire(self): self.flush() if len(self._task_logs) < self.rate_limit: break - await asyncio.sleep(self.retry_interval) + time_to_release = self._task_logs[0] + self.period - time.monotonic() + await asyncio.sleep(time_to_release) self._task_logs.append(time.monotonic())