Add more flexible rate attribute.

`rate` attribute allow custom seconds, example: `rate = "1/300"` — 1 request per 5 minutes.
This commit is contained in:
Arsen Bespalov 2019-08-11 17:52:37 +08:00 committed by GitHub
parent a142467586
commit 8a28da1047
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -103,7 +103,10 @@ class SimpleRateThrottle(BaseThrottle):
return (None, None)
num, period = rate.split('/')
num_requests = int(num)
duration = {'s': 1, 'm': 60, 'h': 3600, 'd': 86400}[period[0]]
if not period.isdigit():
duration = {'s': 1, 'm': 60, 'h': 3600, 'd': 86400}[period[0]]
else:
duration = int(period)
return (num_requests, duration)
def allow_request(self, request, view):