淺談Flask 中的 線程局部變量 request 原理

在多線程服務器中客戶端每建立一個鏈接,服務器就創建一個線程,每個線程中就會有一個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的手腳並沒有這麼簡單,但是並不妨礙我們理解),實現了線程之間的隔離.



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章