Fast ratelimit implementation with django caches
Project description
django-fast-ratelimit
Django-fast-ratelimit provides a secure and fast ratelimit facility based on the django caching framework.
Installation
pip install django-fast-ratelimit
Note: pip >= 19 is required, I use the novel pyproject.toml method
usage
Decorator:
import ratelimit
@ratelimit.decorate(key="ip", rate="1/s")
def expensive_func(request):
# how many ratelimits request limiting
if request.ratelimit["request_limit"] > 0:
# reschedule with end of rate epoch
return request_waiting(request.ratelimit["end"])
blocking Decorator (raises RatelimitError):
import ratelimit
@ratelimit.decorate(key="ip", rate="1/s", block=True, methods=ratelimit.UNSAFE)
def expensive_func(request):
# how many ratelimits request limiting
if request.ratelimit["end"] > 0:
decorate View (requires group):
import ratelimit
from django.views.generic import View
from django.utils.decorators import method_decorator
@method_decorator(ratelimit.decorate(
key="ip", rate="1/s", block=True, methods=ratelimit.SAFE, group="required"
), name="dispatch")
class FooView(View):
...
manual
import ratelimit
def func(request):
ratelimit.get_ratelimit(key="ip", rate="1/s", request=request, group="123")
# or only for GET
ratelimit.get_ratelimit(
key="ip", rate="1/s", request=request, group="123", methods="GET"
)
# also simple calls possible (note: key in bytes format)
ratelimit.get_ratelimit(
key=b"abc", rate="1/s", group="123"
)
TODO
- more documentation
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 Distribution
Close
Hashes for django-fast-ratelimit-0.2.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | 892993237f1305cdd807eeff796c23315fba64995b42f57c7e269ef87c1dab7e |
|
MD5 | 80fad6881ce837721c7ed1cd343c2d18 |
|
BLAKE2b-256 | abfe8d3a76b539edc76ebb9f42b35a89d36d0ab2d38c61d7a49d82b7d13965ef |
Close
Hashes for django_fast_ratelimit-0.2-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 29d22b359da26cb9389635ec14e386cabf1a2d73f9cbb6db96f4cdffb2dec133 |
|
MD5 | e90b8c01e91d81f6caafebdf322c37fe |
|
BLAKE2b-256 | 01364a3920da3a9f604b7f76f59ad68882547975473b0f773c18f5514118cd1e |