2013-09-29 19 views
6

我一直在使用Flask login module,它創建並維護服務器上的會話。Flask與多個服務器登錄如何工作

由於服務器維護會話,我認爲它不是完全無狀態的。當應用程序有多個服務器時它是如何工作的。如果請求是粘性的(即給定的會話應該對後續的請求發送給特定的服務器)?

+0

會話保存在哪裏?如果在某種數據庫中,那麼沒關係,只要所有服務器連接到同一個數據庫即可。 –

回答

10

你做這種說法並不完全正確:

...創建並在服務器上保存會話。

Flask-Login使用Flask提供的會話功能,因此它存儲在會話中的數據將由Flask使用配置的會話存儲機制寫入。

默認情況下,Flask將用戶會話作爲安全cookie寫入客戶端,但服務器上的會話也是可能的。例如,此snippet顯示瞭如何配置Flask以在服務器端Redis存儲上寫入會話。

當用戶會話存儲在客戶端Cookie中時,顯然擁有多個服務器不是問題。該cookie將被髮送到處理每個請求的服務器,所以一切都會正常工作。

對於服務器端會話,這也適用。服務器端會話是在唯一標識符下編寫的,然後將此唯一標識符存儲在客戶端Cookie中。然後每個請求都帶有會話ID,Flask使用此ID來加載會話數據。如果您將所有Web服務器配置爲使用相同的用戶會話存儲,則多臺服務器可以處理來自同一客戶端的請求,而不會造成問題。

+0

謝謝!真的很有幫助 – user462455