限流功能的實現

2022-03-18 19:43:51 字數 1807 閱讀 1022

框架中限流功能的實現依賴於封裝好的限流類,設定方式上分為全域性設定和區域性設定、繼承類設定和自定義類設定。如果要實現限流功能則必須設定deafulrt_throttle_classes和deafulrt_throttle_rates

(一)、全域性設定的實現

1 --settings.py

2 rest_framework =

1011

'default_throttle_rates':

17 --views.py18#

全侷限流功能的實現

19class

demo5apiview(apiview):20#

全域性設定不需要在檢視類中進行操作

21def

get(self, request):22#

投票頁面

23return response('

這是投票頁面')

24 --urls.py

25 urlpatterns =[

26 path('

demo7/

', views.demo7apiview.as_view()),

27 ]

(二)、區域性設定的實現

1  1 --settings.py

2 rest_framework =9}

10 --views.py11#

區域性限流功能的實現

12class

demo6apiview(apiview):

13 throttle_classes =[userratethrottle, anonratethrottle]14#

區域性設定需要寫在檢視函式中,以列表的形式來設定

15def

get(self, reqeust):

16return response('

測試區域性限流功能')

17 --urls.py

18 urlpatterns =[

19 path('

demo6/

', views.demo6apiview.as_view()),

20 ]

(三)、自定義限流功能的實現

1 --settings.py2'

default_throttle_classes

': [3'

rest_framework.throttling.scopedratethrottle',

4#自定義限流需要用到的類5],

67'default_throttle_rates':

11}12 --views.py13#

自定義限流功能的實現

14from rest_framework.throttling import

scopedratethrottle

15class

demo7apiview(apiview):

16 throttle_scope = '

contacts'17

#通過throttle_scope來設定限流速率名稱

18def

get(self, request):

19return response("

測試自定義限流功能")

20 --urls.py

21 urlpatterns =[

22 path('

demo7/

', views.demo7apiview.as_view()),

23 ]

(四)、邏輯圖

Redis 如何實現限流功能?

限流 這種事在生活中很常見,比如逢年過節時景點的限流,還有工作日的車輛單雙號限流等,有人可能會問為什麼要限流?我既然買了車子你還不讓我上路開?還有我倒景點買了門票,景點不是能賺更多的錢嗎?為什麼要限流呢?其實限流的主要目的就是為了保證整個系統的正常執行,比如以車輛限流為了,它的作用主要有兩個,乙個是...

10 Redis實現限流功能

限流 這種事情即使在生活中也很常見,比如我們銀行辦理業務,銀行不可能給去的所有人同時服務,因為櫃檯就那麼幾個。所以可能一次只給5個人辦理業務,其他的人只能在後面排隊 再比如打飯等等,也是一樣的道理。因為能提供服務的數量有限,所以必須要通過限流的方式。這裡提一下微博,微博因為哪個明星出軌了,或者哪個明...

zuul實現的限流

限流一般可以根據客戶端ip,請求的url,使用者登陸資訊進行限制,每秒鐘限制多次數,這從別一方面也提公升了系統的效能,無用的併發沒那麼多了。org.springframework.cloud spring cloud starter zuul com.marcosbarbero.cloud spri...