DRF 框架總結 - 限流 Throttling
阿新 • • 發佈:2018-12-24
限流Throttling
可以對介面訪問的頻次進行限制,以減輕伺服器壓力。
使用
可以在配置檔案中,使用DEFAULT_THROTTLE_CLASSES
和 DEFAULT_THROTTLE_RATES
進行全域性配置,
REST_FRAMEWORK = {
'DEFAULT_THROTTLE_CLASSES': (
'rest_framework.throttling.AnonRateThrottle',
'rest_framework.throttling.UserRateThrottle'
),
'DEFAULT_THROTTLE_RATES' : {
'anon': '100/day',
'user': '1000/day'
}
}
DEFAULT_THROTTLE_RATES
可以使用 second
, minute
, hour
或day
來指明週期。
也可以在具體檢視中通過throttle_classess屬性來配置,如
from rest_framework.throttling import UserRateThrottle
from rest_framework.views import APIView
class ExampleView(APIView):
throttle_classes = (UserRateThrottle,)
...
可選限流類
1) AnonRateThrottle
限制所有匿名未認證使用者,使用IP區分使用者。
使用DEFAULT_THROTTLE_RATES['anon']
來設定頻次
2)UserRateThrottle
限制認證使用者,使用User id 來區分。
使用DEFAULT_THROTTLE_RATES['user']
來設定頻次
3)ScopedRateThrottle
限制使用者對於每個檢視的訪問頻次,使用ip或user id。
例如:
class ContactListView (APIView):
throttle_scope = 'contacts'
...
class ContactDetailView(APIView):
throttle_scope = 'contacts'
...
class UploadView(APIView):
throttle_scope = 'uploads'
...
REST_FRAMEWORK = {
'DEFAULT_THROTTLE_CLASSES': (
'rest_framework.throttling.ScopedRateThrottle',
),
'DEFAULT_THROTTLE_RATES': {
'contacts': '1000/day',
'uploads': '20/day'
}
}