淺談flask中的before_request與after_request
本文主要是對flask中的before_request與after_request用法做一個簡單的分析,具體實例和介紹如下。
使用before_request 和 after_request的方法都非常簡單,使用 @app.before_request 或者@app.after_request 修飾期望在請求前或請求后執(zhí)行的函數(shù)即可
示例:
@app.before_request def before_request(): if not m_ip_range.is_ip_strict(): return ranges = m_ip_range.get_range() ip_int = utils.ip_to_int(request.remote_addr) yes = False for item in ranges: if item['is_used']==0: continue if ip_int >= item['ip_start'] and ip_int <= item['ip_end']: yes = True break if not yes: abort(400)
before_request()函數(shù)被修飾以后,每一次請求到來后,都會先執(zhí)行它,如果沒問題即沒有執(zhí)行到abort(400),那么就會進(jìn)入到正常的被app.route修飾的函數(shù)中進(jìn)行響應(yīng),如果有多個函數(shù)被app.before_request修飾了,那么這些函數(shù)會被依次執(zhí)行。
你很關(guān)心這個before_request裝飾器有什么用,其實它的用處非常大,比如我們希望能對ip地址進(jìn)行過濾,雖然你可以使用nginx,但我們也可以使用before_request來做,使用nginx,我們不得不手動的進(jìn)行設(shè)置,但如果是用flask自身的before_request機(jī)制,我們可以在程序判斷出某個ip有惡意訪問行為后將其加入到緩存當(dāng)中(redis),每次請求到來時,由before_request來判斷這個ip是不是合法的。
被app.after_request修飾過的函數(shù)會在請求得到相應(yīng)后返回給用戶前被調(diào)用,也就是說,這個時候,請求已經(jīng)被app.route裝飾的函數(shù)響應(yīng)過了,已經(jīng)形成了response,我們在這個時候做一些操作,flask有一個插件叫 flask-compress,是對響應(yīng)結(jié)果進(jìn)行壓縮的,它就是用after_request的這個機(jī)制,在response返回前對數(shù)據(jù)進(jìn)行了壓縮,如果你有別的想要操作的事情,同樣可以使用after_request來完成。
總結(jié)
以上就是本文關(guān)于淺談flask中的before_request與after_request的全部內(nèi)容,希望對大家有所幫助。感興趣的朋友可以繼續(xù)參閱本站其他相關(guān)專題,如有不足之處,歡迎留言指出。感謝朋友們對本站的支持!
相關(guān)文章
scrapy框架攜帶cookie訪問淘寶購物車功能的實現(xiàn)代碼
這篇文章主要介紹了scrapy框架攜帶cookie訪問淘寶購物車,本文通過實例代碼圖文詳解給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-07-07Python自動化運(yùn)維之Ansible定義主機(jī)與組規(guī)則操作詳解
這篇文章主要介紹了Python自動化運(yùn)維之Ansible定義主機(jī)與組規(guī)則操作,結(jié)合實例形式分析了自動化運(yùn)維工具Ansible定義主機(jī)與組規(guī)則相關(guān)配置操作與注意事項,需要的朋友可以參考下2019-06-06Python字符串轉(zhuǎn)換成浮點數(shù)函數(shù)分享
本文給大家分享的是一則使用Python實現(xiàn)字符串轉(zhuǎn)換成浮點數(shù)的代碼,主要是使用map和reduce方法來實現(xiàn),有需要的小伙伴可以參考下。2015-07-07在pycharm創(chuàng)建scrapy項目的實現(xiàn)步驟
這篇文章主要介紹了在pycharm創(chuàng)建scrapy項目的實現(xiàn)步驟,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-12-12