アクセス制御の頻度

rest_framework.throttlingインポートSimpleRateThrottle 
インポート時間
VISIT_RECORD = {} 

クラス MyThrottle(オブジェクト):
     "" "
     5回にアクセスできるようにする1分
     """
     DEF __init __(自己):
        self.history = [] 

    DEF allow_request(セルフ、リクエスト、ビュー): 取得、ユーザーのIPアドレス
        、IP = request.META GET" REMOTE_ADDR """ 
        #self.key = self.get_cache_key() のself.cache。GET (self.key、[])
        IF IPないVISIT_RECORD:
            VISIT_RECORD [IP] = [time.time()、]
         
            歴史 = VISIT_RECORD [IP] 
            self.history = 履歴
            history.insert(0 、time.time()) リストは時間を与えるためにであることを確認範囲内の
            一方 self.history [ 0 ] - self.history [ - 1 ]> 60 
                self.history.pop() リストの長さが決定される
            IF lenのない(self.history)<= 5 戻り返す

    #待機
    #[最近の時間、最も古い時間] 
    DEF待機(セルフ):
        リターン 60 - (self.history [ 0 ] - self.history [ - 1 ])
クラスDRFThrottle(SimpleRateThrottle):
    スコープ = " WD " 
    DEF get_cache_key(自己、リクエスト、ビュー): 拿IP地址
        リターン self.get_ident(リクエスト)

 

おすすめ

転載: www.cnblogs.com/bozhengheng/p/12113213.html