Request rate limiter using a leaky-bucket algorithm
This library implements a request rate limiting system utilizing the leaky-
bucket algorithm. It tracks multiple rate limits and intervals as defined by
users, offering both synchronous and asynchronous operation modes. The library
can independently monitor rate limits for different services or resources,
managing exceeded limits by raising exceptions or imposing delays on requests.
It supports a range of backends such as in-memory, SQLite, Redis, and
PostgreSQL, which facilitates the persistence of limit tracking across
multiple threads or application restarts. This is particularly useful in
environments with variable request loads, ensuring compliance with service
constraints without exceeding predefined request thresholds.