core[patch]: use time.monotonic() instead time.time() in InMemoryRateLimiter

**Description:**

The get time point method in the _consume() method of
core.rate_limiters.InMemoryRateLimiter uses time.time(), which can be
affected by system time backwards. Therefore, it is recommended to use
the monotonically increasing monotonic() to obtain the time

```python
        with self._consume_lock:
            now = time.time()  # time.time() -> time.monotonic()

            # initialize on first call to avoid a burst
            if self.last is None:
                self.last = now

            elapsed = now - self.last  # when use time.time(), elapsed may be negative when system time backwards

```
This commit is contained in:
blueoom 2024-08-09 23:31:20 +08:00 committed by GitHub
parent bd6c31617e
commit c3ced4c6ce
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -181,7 +181,7 @@ class InMemoryRateLimiter(BaseRateLimiter):
the caller should try again later.
"""
with self._consume_lock:
now = time.time()
now = time.monotonic()
# initialize on first call to avoid a burst
if self.last is None: