W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗值獎勵
上下文的一個典型應(yīng)用場景就是用來緩存一些我們需要在發(fā)生請求之前或者要使用的 資源。舉個例子,比如數(shù)據(jù)庫連接。當(dāng)我們在應(yīng)用上下文中來存儲東西的時候你 得選擇一個唯一的名字,這是因為應(yīng)用上下文為 Flask 應(yīng)用和擴展所共享。
最常見的應(yīng)用就是把資源的管理分成如下兩個部分:
通常來講,這將會有一個 get_X() 函數(shù)來創(chuàng)建資源 X ,如果它還不存在的話。 存在的話就直接返回它。另外還會有一個 teardown_X() 的回調(diào)函數(shù)用于銷毀資源 X 。
如下是我們剛剛提到的連接數(shù)據(jù)庫的例子:
import sqlite3
from flask import g
def get_db():
db = getattr(g, '_database', None)
if db is None:
db = g._database = connect_to_database()
return db
@app.teardown_appcontext
def teardown_db(exception):
db = getattr(g, '_database', None)
if db is not None:
db.close()
當(dāng) get_db() 這個函數(shù)第一次被調(diào)用的時候數(shù)據(jù)庫連接已經(jīng)被建立了。 為了使得看起來更隱式一點我們可以使用 LocalProxy 這 個類:
from werkzeug.local import LocalProxy db = LocalProxy(get_db)
這樣的話用戶就可以直接通過訪問 db 來獲取數(shù)據(jù)句柄了, db 已經(jīng)在內(nèi)部完 成了對 get_db() 的調(diào)用。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: