請求上下文和應用上下文


什么是上下文

上下文 : 相當於一個容器,保存了Flask程序運行過程中的一些信息.在計算機中,相對於進程而言,上下文就是進程執行時的環境.

Flask中有兩種上下文:請求上下文和應用上下文

請求上下文(request contest)

request,和session都是請求上下文對象

request  封裝了HTTP請求的內容,針對的是http請求,request對象只有在上下文的生命周期內才有效,離開了請求的生命周期,其上下文環境就不存在了

也就無法獲取request對象了.

session  用來記錄請求回話中的信息,針對的用戶信息

應用上下文 (application context)

current_app :  表示當前運行程序文件的程序事例,可以通過current_app.name打印當前應用程序實例的名字

g : 處理請求時,用於臨時儲存的對象,每次請求都會重置

   1   當調用app = Flask(name)的時候,創建了程序應用對象

   2   request在每次http請求發生時,WSGI server調用Flask.call();然后在flask內部創建flask對象

   3   app的生命周期大於request和g,一個app存活期間,可能發生多次  http請求,所以會有多個request,g

   4    最終傳入視圖函數,通過return,redirect,和render_template生成response對象,返回給客戶端

    從一個Flask App讀入配置並且啟動開始,就進入了App Context,在其中我們可以配置文件,打開資源文        件,通過路由規則反向URL   

請求上下文和應用上下文的區別

請求上下文:保存了客戶端和服務器交互的數據

應用上下文 : 在flask程序運行的過程中,保存了一些配置信息,比如程序文件名,數據庫的鏈接,用戶信息等

問題

既然在web應用運行時,應用上下文和請求上下文都是thread local 為什么還要獨立二者?

是為了能讓兩個以上的應用共存在WSGI應用中,這樣在請求中,可以通過應用上下文來獲取當前請求的應用信息

參考鏈接https://blog.csdn.net/Enjolras_fuu/article/details/79892961

   

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM