午夜剧场伦理_日本一道高清_国产又黄又硬_91黄色网战_女同久久另类69精品国产_妹妹的朋友在线

您的位置:首頁技術文章
文章詳情頁

Django限制API訪問頻率常用方法解析

瀏覽:286日期:2024-09-21 09:40:17

需求描述:

平臺中需要編寫接口供第三方調用,需要控制調用頻率,需求為5s內調用一次后不得再次調用。

解決思路

1.Django官方插件庫中有個django-ratelimit插件可以滿足要求, django-ratelimit文檔地址,很靈活很強大。只需要在我們的views函數上加上

@ratelimit(key=’ip’, rate=’1/30s’, block=True)裝飾器就可以了,網站上的資料不多,大部分都是英文的。在這里稍微解釋下參數:

key=’ip’, 必填項,標識按照IP劃分,我理解的是同一IP,遵循后面參數設定的規則。

rate=’1/30s’,必填項,設置的頻率值,這個意思是30秒內執行一次,也可以按照 “分”,“時”,“日” 等劃分,很靈活的配置,比如每分鐘執行5次,可以這樣寫rate=’5/m’,這里參考文檔足夠弄明白

block=True,在這里吃了個虧,默認是False,加上了裝飾器沒寫該參數,訪問不受限制,沒有達到間隔時間內不能再訪問的預期效果,果斷回去翻文檔,

谷歌翻譯:False是否阻止請求而不是注釋。

我理解大概的意思是,當訪問進來的時候是否去阻止它,把block=True之后,在次測試訪問,可以看到403,確實是阻止了。

還有其它的參數,有更多需求的話可以看看,這是其一。

2.通過session存儲訪問時間

這里其實有兩種方式,第一是寫在中間件中,第二是裝飾器,每個人需求不一樣,我這一大堆函數就幾個需要給外部調用的,干脆就做了裝飾器,先貼碼:

def limit(seconds = 5):’’’@func: 限制訪問頻率裝飾器’’’def rate_limit(func):def func_limit(request):now=time.time()request_time = request.session.get(’request_time’,0)interval_time = int(now - request_time)if interval_time < seconds:ret = ret_content(20008,’%s 秒后可再次訪問’%(seconds-interval_time))return JsonResponse(ret)else:request.session[’request_time’] = time.time()ret = func(request)return retreturn func_limitreturn rate_limitdef ret_content(ret_code,message):return {’ret_code’:ret_code,’message’:message}

大概思路是:將當前訪問的時間存session,設置時間間隔,當在時間間隔之內的時候,不讓其刷新,并返回json,超過時間間隔,更新session,讓其執行。使用如下:

@limit(seconds=30)

30s內執行一次,我這個乞丐版的沒第一種方法靈活了,不過在禁止期間返回的結果值會比較友好,不是403。程序處理會比較方便,另外針對IP的情況,我這里沒做處理,需要的話自己可以改改,把request_time換成IP + Salt方式就可以了。

外部IP地址獲取代碼這里也貼出來:

def get_remote_cli_ip(request):’’’@func:獲取客戶端ip’’’ip = request.META.get(’HTTP_X_FORWARDED_FOR’,0)if ip == 0:return request.META[’REMOTE_ADDR’]else:return ip

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持好吧啦網。

標簽: Django
相關文章:
主站蜘蛛池模板: 日韩国产在线 | 国产69精品久久久久久久久久 | 国产探花在线播放 | 五月婷婷丁香综合 | 国产精品一二三四区 | 国产欧美在线观看视频 | 国产白丝精品91爽爽久久 | 日日夜夜免费精品视频 | 黄网在线视频 | 亚洲欧美第一页 | 亚洲影视一区 | 尹人久久| 青青久在线视频 | 特级a毛片| 欧美日韩在线国产 | 久久精品无码一区二区三区 | 一本到在线视频 | 欧美一级片在线播放 | 国产高清视频 | 91久久精品日日躁夜夜躁国产 | 国产自在线 | 日日摸日日干 | av免费一区 | 三级网站在线播放 | 天堂欧美城网站 | 毛片在线观看视频 | 一本色道久久综合亚洲精品酒店 | 91视频在线免费 | 蜜桃在线一区二区 | 亚洲成人精品在线观看 | 奇米影视亚洲春色 | 亚洲国产黄色 | 制服.丝袜.亚洲.中文.综合懂色 | 中文久久乱码一区二区 | 日本a天堂| 一二三区中文字幕 | 国产极品一区 | 中文字幕在线观看不卡 | 手机看片日韩欧美 | 免费毛片播放 | 狠狠爱综合网 |