Flask 上下文如何工作

2021-08-23 18:39 更新

如果你研究 Flask WSGI 應(yīng)用內(nèi)部如何工作,你會(huì)找到和這非常相似的一段代碼:

def wsgi_app(self, environ):
    with self.request_context(environ):
        try:
            response = self.full_dispatch_request()
        except Exception, e:
            response = self.make_response(self.handle_exception(e))
        return response(environ, start_response)

?request_context()? 方法返回一個(gè)新的 ?RequestContext? 對(duì)象,并結(jié)合 with 聲明來(lái)綁定上下文。 從相同線程中被調(diào)用的一切,直到 with 聲明結(jié)束前,都可以訪問(wèn)全局的請(qǐng)求 變量( ?flask.request? 和其它)。

請(qǐng)求上下文內(nèi)部工作如同一個(gè)棧。棧頂是當(dāng)前活動(dòng)的請(qǐng)求。 ?push()? 把上下文添加到棧頂, ?pop()? 把它移出棧。在出棧時(shí),應(yīng)用的 ?teardown_request()? 函數(shù)也會(huì)被執(zhí)行。

另一件需要注意的事是,請(qǐng)求上下文被壓入棧時(shí),并且沒(méi)有當(dāng)前應(yīng)用的應(yīng)用上下文, 它會(huì)自動(dòng)創(chuàng)建一個(gè) 應(yīng)用上下文 。

以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)