Thread-safe rate limiter algorithms
Project description
keylimiter - A Thread-safe rate limiter for Python
Two of the most popular rate limiter algorithms: token bucket and sliding window counter.
it's "key"limiter to enphasize that it's a key based rate limiter, not a ip based rate limiter, so the key can be anything, like an ip, an user id, an url, etc.
Some use cases:
- limit the number of requests per ip
- limit likes per user in a post
- limit the number of notifications per user
token bucket
SOME_IP = "111.222.1.1"
"""
:param int bucket_size: maximum number of tokens in the bucket
:param float refill_rate: token refill rate in seconds
:param Callable[[], float] time_func: function that returns the current time in seconds. Default: monotonic
"""
limiter = TokenBucketLimiter(bucket_size=3, refill_rate=1)
for _ in range(3):
assert limiter.allow(SOME_IP) == True
assert limiter.allow(SOME_IP) == False
sliding window counter
SOME_IP = "111.222.1.1"
"""
:param int max_requests: maximum number of requests in a window
:param str window_unit: "second" | "minute" | "hour". Default: "minute"
:param Callable[[], float] time_func: function that returns the current time in seconds. Default: monotonic
"""
limiter = SlidingWindowCounterLimiter(max_requests=3, window_unit="second")
for _ in range(3):
assert limiter.allow(SOME_IP) == True
assert limiter.allow(SOME_IP) == False
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file keylimiter-0.1.5.tar.gz.
File metadata
- Download URL: keylimiter-0.1.5.tar.gz
- Upload date:
- Size: 16.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/4.0.2 CPython/3.11.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6655240c15d1aee6acf26bd66bb1ae6c5dfd014e287f9c9c563dcfeacfc8fc81
|
|
| MD5 |
a25e039f2d96a9e3a9779193aae00505
|
|
| BLAKE2b-256 |
dfe2d3da04a3ce3a28d9553c3f0bc646abb345fd106c64e8e1cdb61fb4887161
|
File details
Details for the file keylimiter-0.1.5-py3-none-any.whl.
File metadata
- Download URL: keylimiter-0.1.5-py3-none-any.whl
- Upload date:
- Size: 18.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/4.0.2 CPython/3.11.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
08d0f7b05133e3e2b7f7aab8e023a8881deb37ec213a3ff270d79876658ed2e5
|
|
| MD5 |
b70d6cb58bebf48bad8172016730eb78
|
|
| BLAKE2b-256 |
ea1120ecbfd26ea2f0715b8cd0308d2d1a6e3401f7395162a3fd4c7226b4b2a1
|