Skip to main content
https://img.shields.io/pypi/v/django_limiter.svg

Django Limiter is a Signed Cookie based RPS (Requests per second) limiter.

How it works?

If a user (or a parser) visits your site first time, he redirected to the special page and receives an signed cookie with current timestamp. On this page he will be redirected by JavaScript to the URL he requested before.

If a user visits your site with Limiter’s cookie, Limiter checks the cookie and if the last request had little time, Limiter throws HTTP Response with 429 status code (Too Many Requests)

Otherwise nothing will happen.

Client can’t properly change Limiter’s cookie and abuse (read more about signing here: https://docs.djangoproject.com/en/dev/topics/signing/)

Installation

Install from PyPI:

$ pip install django_limiter

Append 'django_limiter' to your INSTALLED_APPS:

INSTALLED_APPS = [
    # your apps
    'django_limiter',
]

Insert 'django_limiter.middleware.RateLimiter' BEFORE any other middleware into MIDDLEWARE setting (or MIDDLEWARE_CLASSES):

MIDDLEWARE = [
    'django_limiter.middleware.RateLimiter',
    # Another middlewares
]

Add url(r'^limiter/', include(django_limiter.urls)) to your url config:

import django_limiter

urlpatterns = [
    url(r'^admin/', admin.site.urls),
    # Another url patterns
    url(r'^limiter/', include(django_limiter.urls)),
]

Configuration

Here is several settings you can set:

LIMITER_COOKIE_NAME — The name of the cookie. Default: ‘limiter’

LIMITER_INTERVAL — The time (in seconds, can be float) client must wait before he can send next request. Default: 0.333

LIMITER_TEMPLATE_NAME — The name of the template for page to which the client gets temporarily. This page should redirect client to requested page after LIMITER_INTERVAL seconds pass. Template receives 'timeout', 'path' and 'request' context.

LIMITER_EXCEPT — List of URLs Limiter must except. You shouldn’t add root ('/') into this list. Default: []

LIMITER_EXCEPT = ['/my/custom/path', reverse_lazy('or-lazy-reverse')]

Release files for django_limiter 1.0.2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for django_limiter 1.0.2
File Size Uploaded
django_limiter-1.0.2.tar.gz 3.1 kB Details

Release files / django_limiter-1.0.2.tar.gz

Download URL django_limiter-1.0.2.tar.gz
Size 3.1 kB
Tags Source
SHA-256 checksum
How to use checksums
ee577ee9d2ca82fa4bc784a1e317debcd24667d456a7194a6d7d78fa9128e13e
BLAKE2b-256 checksum
How to use checksums
01ad117ebdbc0a0e73f84a9715bf1240f7d23d4a62dcef890f054dbdbf28fa40
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No

Release history Release notifications | RSS feed

This release

1.0.2 This release

1 release file

1.0.1

1 release file

1.0.0

1 release file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page