Flask高併發

進度
進行中
類別
作者
Timothychen
Created
Apr 29, 2022 06:50 AM
製作時間
Nginix+Gunicorn
 
我們想要使用gunicorn的目的很簡單,就是為了增加flask應用程式的負載能力,防止網站因為某些特殊原因掛掉。
那gunicorn本身的並行帶有兩種參數 workers和threads,但是每一個worker之間的內存是不共用的,也基本上就是相當於每一個worker就是一個獨立運作的應用程式。
也正是因為如此,所以如果在使用multi-workers的時候要在flask中實現session-based的登入功能,而flask的secret我們設定為系統產生的隨機數,就可能會導致用戶無法正常的完成登入的操作。
因為每一個worker中的secret key都是重新產生的,也就是說假設今天有3個worker(A、B、C)。
那ABC那個worker中所產生的secret key都會是不一樣的,而每一個worker在檢測客戶端session,想要確認用戶是否登入的時候就會出現問題(因為session在flask中是用secret key 進行加密的,也就是說每一個worker都會把其他worker的session視為無效的session,然後不給予放行)
 
 
 

參考資料