1. 程式人生 > >淺談Flask 中的 執行緒區域性變數 request 原理

淺談Flask 中的 執行緒區域性變數 request 原理

在多執行緒伺服器中客戶端每建立一個連結,伺服器就建立一個執行緒,每個執行緒中就會有一個request來表示客戶端的連結請求資訊。

不同的使用者訪問flask伺服器.都有自己的request.

使用者A------------執行緒A-------------> request

使用者B------------執行緒B-------------> request

from flask import request

@app.route("/index")

def index():
    params = request.args.get()
    return "hello world"

 

執行緒區域性變數的本質是全域性變數     大概的實現方式>>>>>    

request={
                                                                                        
    "執行緒A":{args,data,form...},
                                                                                        
    "執行緒B":{args,data,form...}
                                                                                        
    # ....................

                                }

 

Flask 隱藏了一個細節    執行緒A使用這段函式的時候(比如request.args),並不能直接操作 args,data.等等,

它先看這段程式碼當中執行到哪個執行緒,識別出這個執行緒,

從request當中根據當前這個執行緒的編號,把屬於這個執行緒的引數值拿出來.

 

 

雖然request還是一個全域性變數,但是在取值的時候,做了類似相對應的手腳(當然,flask的手腳並沒有這麼簡單,但是並不妨礙我們理解),實現了執行緒之間的隔離.