request_limiter

Request limiter contains a decorator to limit the rate of http request


Keywords
request_limiter
License
MIT
Install
pip install request_limiter==0.1.1

Documentation

Request Limiter

Documentation Status

Request limiter contains a decorator to limit the rate of http request

Features

  • A decorator to limit django http request
  • A strategy to limit request per interval using requester IP

Get started

Installation:

$ pip install request_limiter

Limit request to django view using a decorator:

from request_limiter import request_limiter, LimitedIntervalStrategy, django_request_limiter

@django_request_limiter
@request_limiter(strategy=LimitedIntervalStrategy(requests=10, interval=60))  # 10 request per minute
def myview(request):
    # ...

Limit the number of request to function or part of it:

from request_limiter import request_limiter, LimitedIntervalStrategy, LimitException

@request_limiter(strategy=LimitedIntervalStrategy(requests=1, interval=60))  # 1 request per minute
def awesome_work(param):
    # ...

awesome_work("test")
try:
    awesome_work("limited")  # raises LimitException
except LimitException:
    # .. handle limit exception

limiter = LimitedIntervalStrategy(requests=1, interval=60))  # 1 request per minute

def another_work(param):
    if not limiter.allow():
        return False
    # ...
    return True

another_work("job1")  # returns True
another_work("job2")  # returns False

Credits

This package was created with Cookiecutter and the audreyr/cookiecutter-pypackage project template.