在多線程服務器中客戶端每建立一個鏈接,服務器就創建一個線程,每個線程中就會有一個request來表示客戶端的鏈接請求信息。
不同的用戶訪問flask服務器.都有自己的request.
from flask import request
用戶A------------線程A-------------> @app.route("/index")
用戶B------------線程B-------------> def index():
request.args.get()
..............................
線程局部變量的本質是全局變量 大概的實現方式>>>>> request={
"線程A":{args,data,form...}
"線程B":{args,data,form...},
....................
}
Flask 隱藏了一個細節 線程A使用這段函數的時候,並不能直接操作 args,data.等等,
它先看這段代碼當中運行到哪個線程,識別出這個線程,
從request當中根據當前這個線程的編號,把屬於這個線程的參數值拿出來.
雖然request還是一個全局變量,但是在取值的時候,做了類似相對應的手腳(當然,flask的手腳並沒有這麼簡單,但是並不妨礙我們理解),實現了線程之間的隔離.