A rate limiter plugin for Falcon
Project description
falcon-ratelimit
================
Rate limiter for Falcon. Install with:
pip install falcon-ratelimit
Use like:
import falcon
from falconratelimit import rate_limit
class NoRedisResource(object):
@falcon.before(rate_limit(per_second=5, window_size=30,
resource='resource_name'))
def on_post(self, req, resp):
...
class RedisResource(object):
@falcon.before(rate_limit(redis_url='localhost:6379', per_second=1,
window_size=10))
def on_post(self, req, resp):
...
This package works by limiting the number of requests using two variables
per_second
and window_size
. In the first example above, the
NoRedisResource
class is restricted to 5 requests per second over a 30 second
window meaning that there is a limit of 150 requests over 30 seconds. The
default storage of calling the rate_limit
decorator is an in memory list to
store the number of requests for the given user using the resource
resource_name
.
The second example implements the optional storage to use Redis by passing in a
redis_url
to store user request data. Using Redis allows for the rate
limiting to be implemented across multiple instances of a particular
application. In the RedisResource
class example the user is allowed to make
1 request per second over 10 seconds meaning that there is a limit of 10
requests over 10 seconds. Since this example didn't pass in a resource
it
uses default
as the name for request storage.
If you do not have the redis
package installed, Redis-related functionality
will not work.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distributions
Hashes for falcon_ratelimit-1.2-py2.py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | d732531d9baf9d75fd7259d7670f192b836a90e8805491a42846f1c145c68ecc |
|
MD5 | 71f33b050048140b2e89349029f33f28 |
|
BLAKE2b-256 | c3ceb78adc0d98c95d306bc093991c7531334fb7e2f9d8cb6a9cfc4e1bb68ae7 |