Django_rest-frameworkスロットル

3536 ワード

文書ディレクトリ
  • スロットル関数を作成し、ローカルスロットル
  • を実現します.
  • 配置settings,グローバルスロットル
  • オプションストリーム制限クラス
  • ローカルスロットルを実現するスロットル関数の作成
    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を使用する