UsageΒΆ
$ pip install request_limiter
Using as a decorator on django view:
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):
# ...
@django_request_limiter
@request_limiter(strategy=LimitedIntervalStrategy(requests=100, interval=24*60*60)) # 100 request per day
def anotherview(request):
# ...
Using as a decorator on any function:
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
Using the strategy to limit part of logic:
from request_limiter import LimitedIntervalStrategy
limiter = LimitedIntervalStrategy(requests=1, interval=60)) # 1 request per minute
def awesome_work(param):
if not limiter.allow():
return False
# ...
return True
awesome_work("job1") # returns True
awesome_work("job2") # returns False