Django_rest-frameworkスロットル
文書ディレクトリスロットル関数を作成し、ローカルスロットル を実現します.配置settings,グローバルスロットル オプションストリーム制限クラス ローカルスロットルを実現するスロットル関数の作成
settings、グローバルスロットルの構成
オプションストリーム制限クラス
1>AnonRateThrottleはすべての匿名の未認証ユーザーを制限し、IPを使用してユーザーを区別してDEFAULT_を使用するTHROTTLE_RATES[‘anon’]で頻度を設定する2>UserRateThrottle認証ユーザを制限し、user idでDEFAULT_を使い分けるTHROTTLE_RATES['user']は、頻度を設定する3>ScopedRateThrottleは、各ビューに対するユーザーのアクセス頻度を制限し、ipまたはuser idを使用する
from rest_framework.throttling import SimpleRateThrottle
class MyThrottle(SimpleRateThrottle):
rate = '5/m' # / (s,m,h,d)
scope = 'MyThrottle'
def get_cache_key(self, request, view):
print("dddddd")
# print(request.user.__dict__)
# ID, , 5
if request.user and request.user.id:
return None # None,
else:
return 1 #
settings、グローバルスロットルの構成
REST_FRAMEWORK = {
'DEFAULT_THROTTLE_CLASSES': ['rest_framework.throttling.AnonRateThrottle'],
'DEFAULT_THROTTLE_RATES': {
'vistor': '3/m',
'anon': '2/day',#
},
}
オプションストリーム制限クラス
1>AnonRateThrottleはすべての匿名の未認証ユーザーを制限し、IPを使用してユーザーを区別してDEFAULT_を使用するTHROTTLE_RATES[‘anon’]で頻度を設定する2>UserRateThrottle認証ユーザを制限し、user idでDEFAULT_を使い分けるTHROTTLE_RATES['user']は、頻度を設定する3>ScopedRateThrottleは、各ビューに対するユーザーのアクセス頻度を制限し、ipまたはuser idを使用する