From 886f8b47510c830483b5adae1855593cdc3df2dc Mon Sep 17 00:00:00 2001 From: Tom Christie Date: Fri, 14 Sep 2012 08:54:58 +0100 Subject: Tweak throttles and improve docs --- docs/api-guide/throttling.md | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) (limited to 'docs/api-guide') diff --git a/docs/api-guide/throttling.md b/docs/api-guide/throttling.md index 0856183b..d1e34dcd 100644 --- a/docs/api-guide/throttling.md +++ b/docs/api-guide/throttling.md @@ -83,6 +83,29 @@ The allowed request rate is determined from one of the following (in order of pr * The `rate` property on the class, which may be provided by overriding `UserThrottle` and setting the property. * The `DEFAULT_THROTTLE_RATES['user']` setting. +An API may have multiple `UserRateThrottles` in place at the same time. To do so, override `UserRateThrottle` and set a unique "scope" for each class. + +For example, multiple user throttle rates could be implemented by using the following classes... + + class BurstRateThrottle(UserRateThrottle): + scope = 'burst' + + class SustainedRateThrottle(UserRateThrottle): + scope = 'sustained' + +...and the following settings. + + API_SETTINGS = { + 'DEFAULT_THROTTLES': ( + 'example.throttles.BurstRateThrottle', + 'example.throttles.SustainedRateThrottle', + ) + 'DEFAULT_THROTTLE_RATES': { + 'burst': '60/min', + 'sustained': '1000/day' + } + } + `UserThrottle` is suitable if you want a simple global rate restriction per-user. ## ScopedRateThrottle -- cgit v1.2.3