Skip to main content

Django Rate limiter for Admin panel, with synchronization towards Redis. Currently supports OpenResty as a rate limit server

Project description

Django Rate Limiter

  • Tested on: Python 3.11.5
  • Django 5.2.12

High Level Design principle of library

Start by installing the package:

pip install django-api-rate-limiter

Then add in your settings.py

INSTALLED_APPS = [
    # rest of the apps..
    'django_api_rate_limiter'
]

# you will need to configure the default cache to point to Redis 

CACHES = {
    "default": {
        "BACKEND": "django_redis.cache.RedisCache",
        "LOCATION": "redis://127.0.0.1:6379/1",
        "OPTIONS": {
            "CLIENT_CLASS": "django_redis.client.DefaultClient",
        }
    }
}

Navigate to your /admin page and visit section "Admin_Limiter"->"Api limiters".

There you can set up your own limits specified in "values per second". For example, you can fill up as:

Speed Value 10
Method Get
Url /api/limited

This translates to: For every anonymous & logged in user apply the limit of 10 requests per second for GET requests going to /api/limited

If your project is using django-oauth-toolkit, you can specify per-user limits, which are linked to the oauth tokens issued to users

Please install OpenResty if you would like to use the Lua files from "nginx_lua" folder

You can find example & detailed explanation at https://decodeapps.pp.ua/blog/post/how-to-build-dynamic-nginx-rate-limiting-with-django-admin-redis

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

django_api_rate_limiter-0.0.5.tar.gz (68.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

django_api_rate_limiter-0.0.5-py3-none-any.whl (6.5 kB view details)

Uploaded Python 3

File details

Details for the file django_api_rate_limiter-0.0.5.tar.gz.

File metadata

  • Download URL: django_api_rate_limiter-0.0.5.tar.gz
  • Upload date:
  • Size: 68.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for django_api_rate_limiter-0.0.5.tar.gz
Algorithm Hash digest
SHA256 d705ae7868a7803801620fede795a34900630b84917468c315fba625fecd4c5f
MD5 0e60e3e4edcaa345becc210dd08f3704
BLAKE2b-256 020e3482f308193f4b59c2c80ab61bc6f1169a773530f9ac239b528dc0935547

See more details on using hashes here.

Provenance

The following attestation bundles were made for django_api_rate_limiter-0.0.5.tar.gz:

Publisher: python-publish.yml on FallenAngel97/django-rate-limiter

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file django_api_rate_limiter-0.0.5-py3-none-any.whl.

File metadata

File hashes

Hashes for django_api_rate_limiter-0.0.5-py3-none-any.whl
Algorithm Hash digest
SHA256 8f81aa96a4ffbf0638f61a64655949d301874f2ddf360f84baafe0f3c3edfb21
MD5 122684d60b0a0e3819a722553d505e3e
BLAKE2b-256 d02c75b7d8b88c09acabd7aa844fe2f38530ccb3e05f65293a42de8fee066092

See more details on using hashes here.

Provenance

The following attestation bundles were made for django_api_rate_limiter-0.0.5-py3-none-any.whl:

Publisher: python-publish.yml on FallenAngel97/django-rate-limiter

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page