장고 1.11과 파이썬 2.7을 사용하고 있으며 내 웹 서비스에 스로틀을 포함 시키려고했습니다. 장고가 당신을 위해 모든 일을하기 때문에 이것은 처음에는 아주 쉬워 보였습니다. 는하지만 지금은 단지 스로틀 내 의견중 하나와 인증 된 사용자를 구분하고 '버스트'속도를 설정 으로 aswell 로그인 한 사용자 (예 : 분 당 5 개 요청) 과 '지속'속도 원 (예 : 하루에 100 개의 요청). 그것이 문서 (Django Throtte Docs)에 따라 필요하지 않습니다 나는 전혀 settings.py를 변경하지 않은장고의 한보기에서 두 개의 조절판 속도 설정
class SustainedAnon(AnonRateThrottle):
rate = '100/day'
class BurstAnon(AnonRateThrottle):
rate = '6/minute'
class SustainedUser(UserRateThrottle):
rate = '1000/day'
class BurstUser(UserRateThrottle):
rate = '20/min'
:
이 달성, 나는 4 스로틀 클래스를 만들었습니다. 내가 편집 한 유일한 파일이 내 통계 클래스에이 라인을 추가하는 내 views.py했다
class Statistics(APIView):
throttle_classes = (SustainedAnon, BurstAnon, SustainedUser, BurstUser)
그것은 거의가 어떻게해야 무엇 않습니다. 통계 클래스를 제한하고 로그인 한 사용자와 익명 사용자를 별도로 지정하면 이지만은 정확하게 속도를 조절하지 않습니다. 로그인하지 않은 경우 앱은 6 개가 아닌 3 개 요청 후 20 개가 아닌 10 개 요청 후에 로그인을 시작합니다.
모든 스로틀 클래스에 cache-request-value를 설정했기 때문에 이러한 현상이 발생합니다 (로그인하지 않을 때 SustainedAnon과 BurstAnon이 호출됩니다.)
왜 그런 일이 일어나고 장고에게 '한 번만 스로틀 링'만 할 수 있습니까?
나는 벌써 그렇게 해 봤지만, 하나의 뷰에만 두 개의 스콥을 추가하는 것이 불가능 해 보였으므로 하나의 뷰만을 스로틀 할 수는 없다. –
물론 가능합니다. http://www.django-rest-framework.org/api-guide/throttling/#setting-the-throttling-policy는 특정보기에 하나의보기를 조절하는 방법을 알려줍니다. – Linovia
감사합니다. 잘 처리되었습니다. –