python 多線程 session 遺失問題

我們在做 web 服務的時候很常會使用到 session 來記憶暫時的狀態。
同時我們也會將伺服器設定成多線程服務來應付有可能蜂踴而至的使用者。

但是在這兩個需求同時發生時會出現一個很奇妙的狀況,就是 session 很容易消失,這個原因是因為在多個線程中每個線程都會開出一條新的 session。而我們每一次的換頁很有可能會遇到切換線程的狀態。這個時候 session 就會被開出一條新的派發給使用者。我們當然就拿不到原本的資料了。

這個問題的解決方法說來簡單
通常我們一開始得時候會設定這一行

app.config['SECRET_KEY'] = os.urandom(24)

每次更換一個新的 KEY 這是最不容易被破解的,但是這也是造成這個問題的原因。
所以我們只要改成一個靜態的值

app.config['SECRET_KEY'] = 'MYSESSIONKEY'

這樣問題自然就解決了,即便是每次更換一個執行序也不會影響了

留言