框架中限流功能的實現依賴於封裝好的限流類,設定方式上分為全域性設定和區域性設定、繼承類設定和自定義類設定。如果要實現限流功能則必須設定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...