2012-11-17 21 views
3

我實際上是Python web開發的新手。我之前關於web開發的知識來自PHP。Python Web框架中的HTTP請求之間的資源保存方式如何?

在PHP中,沒有資源(變量等)保存兩個不同的HTTP請求(除$_SESSION我猜?)

所以,如果Flaskgunicorn運行之間,有什麼資源是兩個不同的HTTP請求之間保留?

,這個問題就從Flaskthe document。在文檔中,它表示我們需要在app.teardown_request中註冊數據庫會話關閉代碼。在我自己的測試中,如果我沒有註冊會話關閉代碼,數據庫將獲得許多空閒連接。

回答

0

有真的只有兩個方法來處理網絡請求模式:

  1. 旋轉了整個應用程序的每個請求和請求後撕裂下來。未持續(一些其它過程,到磁盤,或到客戶端)是一切在請求結束破壞
  2. 自旋向上的應用程序,然後讓它被拆除前它處理多個請求。幾乎所有不是特定於請求的內容都是保留之間的請求。

模式1對每個請求都有更多工作要做,但它確保應用程序使用的所有資源都被拆除(即使您忘記關閉它們,也不會出現泄漏數據庫連接的問題)。

模式#2具有更少的工作爲每個請求做的,但它是可能的應用程序「泄漏」資源 - 在你的榜樣,你泄露的數據庫連接,如果你不明確地關閉它們作爲。

PHP(mod_php下Apache中嵌入模式運行)使用第一模式。 Flask(以及現在常用於Web開發的大多數語言的框架)使用第二種。

+0

謝謝您的回答。如果在Python中,大多數資源在請求之間保留,我怎樣才能使用以前定義的變量? – yegle

+0

@yegle - 我對「應用程序」的使用有點不清楚。 * web-framework *使用的大多數資源在請求之間保留。如果您需要保留請求之間的數據庫連接池,那麼您需要將其存儲在框架級別。 –

+0

這讓我很困惑。默認情況下,是否有任何資源保留在框架中?或者這是一個每個框架的行爲? – yegle

相關問題