Forum

Need some help? Ask our community for its assistance!

You are not logged in.

#1 12-08-2020 16:32:10

Kivou
Membre
Registered: 17-06-2019
Posts: 1

django ratelimit

Bonjour,

j'utilise django pour mon site internet hébergé sur alwaysdata.

J'essaye de limiter le nombre d'appels / IP à une vue (API) à l'aide du module django-ratelimit en faisant:

@ratelimit(key='ip', rate='2/m')
def myAPIview(request):
    if getattr(request, 'limited', False):
        return JsonResponse({"message": "IP rate limit of 2 calls / m"}, status=429)

   # do stuff and return response

Cela marche très bien dans mon environnement de développement mais pour la production la limite se déclanche de façon "aléatoire".
Aléatoire dans le sens où elle se déclenche de temps en temps mais pas suivant la règle du 2 appels / minutes et pas suivant une règle que j'arrive à déterminer...

Avez-vous une idée de où cela peut venir, j'ai bien lu la doc et je n'arrive pas à trouver une solution qui fonctionne (et j'avoue ne pas bien comprendre le principe de reverse-proxy mentionné dans la section "security")? Est-ce que quelqu'un à réussi à faire fonctionner django-ratelimit sur alwaysdata?

PS: j'utilise la version DB du cache

# Cache
# https://docs.djangoproject.com/en/3.1/topics/cache/
CACHES = {
    'default': {
        'BACKEND': 'django.core.cache.backends.db.DatabaseCache',
        'LOCATION': 'cache',
    }
}

Merci d'avance pour votre aide.

Last edited by Kivou (12-08-2020 16:33:45)

Offline

Board footer

Powered by FluxBB