A rate limiter plugin for Falcon
Project description
falcon-ratelimit
========
Rate limiter for Falcon. Install with:
```bash
pip install falcon-ratelimit
```
Use like:
```python
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.
========
Rate limiter for Falcon. Install with:
```bash
pip install falcon-ratelimit
```
Use like:
```python
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 Distributions
No source distribution files available for this release.See tutorial on generating distribution archives.
Built Distribution
File details
Details for the file falcon_ratelimit-1.1-py2.py3-none-any.whl
.
File metadata
- Download URL: falcon_ratelimit-1.1-py2.py3-none-any.whl
- Upload date:
- Size: 4.1 kB
- Tags: Python 2, Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/1.12.1 pkginfo/1.4.2 requests/2.18.4 setuptools/28.8.0 requests-toolbelt/0.8.0 tqdm/4.28.1 CPython/2.7.13
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 6ba8d51ba380c688d8bbc8404818e8d45ceb5d34c110e69ee07ddfca88c5c71e |
|
MD5 | 79e2a6ad8ea18008a56cccddd18088c9 |
|
BLAKE2b-256 | 0b3646c15a7709f7550d8d205445a6e3b77a7ff897627c73a86d85f92c47ea5e |