You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 
flyapps/fir_ser/api/utils/throttle.py

100 lines
2.8 KiB

#!/usr/bin/env python
# -*- coding:utf-8 -*-
# project: 3月
# author: NinEveN
# date: 2021/3/25
import hashlib
from rest_framework.throttling import SimpleRateThrottle
class VisitShortThrottle(SimpleRateThrottle):
"""短连接用户访问频率限制1"""
scope = "ShortAccessUser1"
def get_cache_key(self, request, view):
return 'short_access_' + self.get_ident(request) + hashlib.md5(
request.META.get('HTTP_USER_AGENT', '').encode("utf-8")).hexdigest()
class InstallShortThrottle(SimpleRateThrottle):
"""短连接用户访问频率限制2"""
scope = "ShortAccessUser2"
def get_cache_key(self, request, view):
return 'short_access_' + self.get_ident(request)
class InstallThrottle1(VisitShortThrottle):
"""短连接用户访问频率限制"""
scope = "InstallAccess1"
def get_cache_key(self, request, view):
return 'install_access_' + self.get_ident(request) + hashlib.md5(
request.META.get('HTTP_USER_AGENT', '').encode("utf-8")).hexdigest()
class InstallThrottle2(InstallThrottle1):
"""短连接用户访问频率限制"""
scope = "InstallAccess2"
class LoginUserThrottle(SimpleRateThrottle):
"""登录用户访问频率限制"""
scope = "LoginUser"
def get_cache_key(self, request, view):
if hasattr(request.user, 'uid'):
return request.user.uid
else:
self.get_ident(request)
class VisitRegister1Throttle(SimpleRateThrottle):
"""注册或者登陆限速1"""
scope = "RegisterUser1"
def get_cache_key(self, request, view):
return 'login_register_' + self.get_ident(request)
class VisitRegister2Throttle(SimpleRateThrottle):
"""注册或者登陆限速2"""
scope = "RegisterUser2"
def get_cache_key(self, request, view):
return 'login_register_' + self.get_ident(request)
class GetAuthC1Throttle(SimpleRateThrottle):
"""注册或者登陆限速1"""
scope = "GetAuthC1"
def get_cache_key(self, request, view):
return 'get_auth_' + self.get_ident(request)
class GetAuthC2Throttle(SimpleRateThrottle):
"""注册或者登陆限速2"""
scope = "GetAuthC2"
def get_cache_key(self, request, view):
return 'get_auth_' + self.get_ident(request)
class ReceiveUdidThrottle1(VisitShortThrottle):
"""post接收设备信息访问频率限制"""
scope = "ReceiveUdid1"
def get_cache_key(self, request, view):
return 'receive_udid_' + self.get_ident(request) + hashlib.md5(
request.META.get('HTTP_USER_AGENT', '').encode("utf-8")).hexdigest()
class ReceiveUdidThrottle2(VisitShortThrottle):
"""post接收设备信息访问频率限制"""
scope = "ReceiveUdid2"
def get_cache_key(self, request, view):
return 'receive_udid_' + self.get_ident(request)