Flask 上下文如何工作

2021-08-10 17:59 更新

如果你研究 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 聲明來綁定上下文。 從相同線程中被調(diào)用的一切,直到 with 聲明結(jié)束前,都可以訪問全局的請(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í),并且沒有當(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)