深度剖析Flask上下文管理機制
阿新 • • 發佈:2018-08-13
完成 不理解 ocs 簡單 server cat cati 計算機 處理流程
上下文是一種屬性的有序序列,為駐留在環境內的對象定義環境。在對象的激活過程中創建上下文,對象被配置為要求某些自動服務,如同步、事務、實時激活、安全性等等。 如在計算機中,相對於進程而言,上下文就是進程執行時的環境。具體來說就是各個變量和數據,包括所有的寄存器變量、進程打開的文件、內存信息等。可以理解上下文是環境的一個快照,是一個用來保存狀態的對象。在程序中我們所寫的函數大都不是單獨完整的,在使用一個函數完成自身功能的時候,很可能需要同其他的部分進行交互,需要其他外部環境變量的支持,上下文就是給外部環境的變量賦值,使函數能正確運行。
前言
上下文這個概念多見於文章中,是一句話中的語境,也就是語言環境。一句莫名其妙的話出現會讓人不理解什麽意思,如果有語言環境的說明,則會更好,這就是語境對語意的影響。上下文是一種屬性的有序序列,為駐留在環境內的對象定義環境。在對象的激活過程中創建上下文,對象被配置為要求某些自動服務,如同步、事務、實時激活、安全性等等。 如在計算機中,相對於進程而言,上下文就是進程執行時的環境。具體來說就是各個變量和數據,包括所有的寄存器變量、進程打開的文件、內存信息等。可以理解上下文是環境的一個快照,是一個用來保存狀態的對象。在程序中我們所寫的函數大都不是單獨完整的,在使用一個函數完成自身功能的時候,很可能需要同其他的部分進行交互,需要其他外部環境變量的支持,上下文就是給外部環境的變量賦值,使函數能正確運行。
請求上下文
關於WSGI
WSGI(全稱Web Server Gateway Interface
),是為 Python 語言定義的Web服務器
和Web應用程序
之間的一種簡單而通用的接口
,它封裝了接受HTTP請求
、解析HTTP請求
、發送HTTP
,響應
等等的這些底層的代碼和操作,使開發者可以高效的編寫Web應用。
Flask提供了兩種上下文,一種是應用上下文(Application Context),一種是請求上下文(Request Context)。
RequestContext
請求上下文Request
請求的對象,封裝了Http請求(environ
)的內容Session
AppContext
程序上下文g
處理請求時用作臨時存儲的對象。每次請求都會重設這個變量current_app
當前激活程序的程序實例
生命周期
current_app
的生命周期最長,只要當前程序實例還在運行,都不會失效。Request
和g
的生命周期為一次請求期間,當請求處理完成後,生命周期也就完結了Session
就是傳統意義上的session了。只要它還未失效(用戶未關閉瀏覽器、沒有超過設定的失效時間),那麽不同的請求會共用同樣的session。
Flask處理流程
待續.......
深度剖析Flask上下文管理機制