에서 rest_framework.throttling 가져 오기 SimpleRateThrottle 가져 오기 시간 VISIT_RECORD = {} 클래스 MyThrottle ( 객체 ) : "" " 다섯 번에 액세스 할 수 있도록 1 분 " "" 는 def __init __ (자동) : self.history = [] DEF allow_request (자체, 요청,보기 ) : # GET 사용자의 IP 주소를 IP . = request.META GET ( " REMOTE_ADDR " , "" ) # self.key = self.get_cache_key () . #의 self.cache GET (self.key, []) 경우 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 () #리스트의 길이가 결정되는 경우 렌 NOT (self.history) <= . 5 : 리턴 거짓 반환 진정한 # 대기 # [최근 시간, 가장 오래된 시간] DEF 대기 (자동) : 리턴 (60) - (self.history [ 0 ] - self.history [- 1 ])
클래스 DRFThrottle (SimpleRateThrottle) : 범위 = " WD " 데프 get_cache_key (자기, 요청,보기) : #拿IP地址 반환 self.get_ident (요청시)