flask 鉤子函式使用

2021-08-26 15:24:09 字數 2125 閱讀 9687

一、鉤子函式的概念

鉤子函式是windows訊息處理機制的一部分,通過設定「鉤子」,應用程式可以在系統級對所有訊息、事件進行過濾,訪問在正常情況下無法訪問的訊息。鉤子的本質是一段用以處理系統訊息的程式,通過系統呼叫,把它掛入系統。

二、常用的三大鉤子函式

註冊乙個函式,在處理第乙個請求之前執行.

def

bf_first_request

():

g.string =

'before_first_request'

執行程式,呼叫

http://localhost:5000/test會顯示g中傳遞的string變數

註冊乙個函式,在處理每次請求之前執行.

註冊乙個函式,在每次請求之後執行.註冊的函式至少需要含有乙個引數,這個引數實際上為伺服器的響應,且函式中需要返回這個響應引數.

def

af_request

(param):

return param

三、主要解決的實際問題(**奉上)

–1.訪問頻率的限制

–2.封爬蟲的ip

import time

from flask import request

from flask_restful import abort

path_list = ["/goods/"]

permission_buy_list =

defload_middleware

defbefore

(): path = request.path

ifnot path.startswith("/_debug"):

ip = request.remote_addr

black_list = cache.get("black") or

if ip in black_list:

# abort(400, message="小夥子,爬蟲獲取十條資料就是三年")

return

"小夥子,爬蟲獲取十條資料就是三年", 400

request_list = cache.get(ip)

if request_list:

"""[11:42:05, 11:42:07, 11:43:10, 11:43:33]

反轉時間

[11:47:50, 11:47:30, 11:47:22, 11:46:55...]

"""while request_list and time.time() - request_list[-1] >= 60:

request_list.pop()

if len(request_list) > 60:

cache.set("black", black_list, timeout=60*60*24)

# abort(400, message="小爬蟲回家睡覺吧")

return

"小爬蟲回家睡覺吧", 400

if len(request_list) > 30:

request_list.insert(0, time.time())

cache.set(ip, request_list, timeout=60)

return

"您的請求頻率過高"

else:

request_list =

print(ip, len(request_list))

request_list.insert(0, time.time())

cache.set(ip, request_list, timeout=60)

mysql 鉤子函式 Flask鉤子函式是什麼

flask鉤子函式 在flask中鉤子函式是使用特定的裝飾器的函式。為什麼叫做鉤子函式呢,是因為鉤子函式可以在正常執行的 中,插入一段自己想要執行的 那麼這種函式就叫做鉤子函式。before first request flask專案第一次部署後會執行的鉤子函式。before request 請求已...

Flask之鉤子函式

1 before first request deffirst request print first time request 2 before request 使用較多 defbefore request ifnothasattr g,glo1 setattr g,glo1 想要設定的 deft...

鉤子函式使用小結

鉤子函式使用小結 首先讓我們看看hook函式是怎麼安裝 呼叫和刪除的。應用程式通常是呼叫setwindowshookex 函式來進行安裝的,其函式的原型如下 setwindowshookex int idhook,hookproc lpfn,hinstance hmod,dword dwthread...