python flask上下文管理

2021-09-26 16:11:44 字數 1306 閱讀 4169

類方法中有__enter__和__exit__兩個方法,可以使用with,管理上下文

請求上下文 物件 request封裝(request)

request requestcontext 請求上下文

通過上下文獲取flask和request核心物件

離線應用,單元測試

示例:

class myresource:

# 上下文管理 with語句

def __enter__(self):

print('connect to resource')

return self

# a = 1

def __exit__(self, exc_type, exc_val, exc_tb):

print('closed resource connection')

# b = 2

if exc_tb:

print('process exception')

else:

print('no exception')

print('closed resource connection')

return true # 返回flase或什麼都不返回在with外部還會丟擲異常,true不會再返回異常

def query(self):

print('query data')

with myresource() as resource: # as obj_a 為空none,不是上下文管理器,是__enter__方法返回的變數值

resource.query()

# 請求上下文 物件 request封裝(request)

# request requestcontext 請求上下文

# 通過上下文獲取flask和request核心物件

# 離線應用,單元測試

ctx.push()

ctx.pop()

# with 上下文管理,對實現了上下文協議的物件使用with

# 上下文管理器

# __enter__ (push) __exit__ (pop)

# with 資源管理 : 連線資料庫

# 1.連線資料庫 __enter__

# 2.sql

# 3.釋放資源 __exit__

# 第一種

# try:

# pass

# except:

# pass

# finally:

# pass

# 第二種

# with

上下文 上下文棧

全域性 函式 區域性 在執行全域性 前將window確定為全域性執行上下文 對全域性資料進行預處理 var定義的全域性變數 undefined,新增為window的屬性 function宣告的全域性函式 賦值 fun 新增為window的方法 this 賦值 window 開始執行全域性 在呼叫函式...

中斷上下文 程序上下文

在學習與作業系統相關的知識時候,我們經常遇到程序上下文 中斷上下文,看似熟悉又感覺不是特別清晰。這裡我們從如下幾個方面進行描述。上下文是從英文中context翻譯過來的,指的是一種環境。上下文我們看起來不怎麼熟悉,但是我們可以看context的中文翻譯,或者我們能更加的情形些。context n 語...

全域性上下文與上下文

全域性上下文由main函式載入系統的主架構和主事件迴圈和全域性資料構成。是上帝創造世界時,建立的基礎事物。萬物之始,大道至簡,衍化至繁。全域性上下文代表著程式執行所需要的基礎資源。是程式執行的基礎。全域性上下文的特徵是在程式執行期間常駐記憶體。全域性上下文的生命週期和應用程式的生命週期相同。與應用程...