状態を外に出す
台の中に持つと増やせない
ログインした人の情報を、サーバーの中の変数に入れているとします。
1台のうちは動きます。2台にした瞬間に壊れます。
ログインしたときは1台目に届き、次の要求は2台目に届くからです。2台目は、その人を知りません。
できます。ただしその台が落ちたら、その台にログインしていた人だけが全員ログアウトします。
台を増やす目的は、1台落ちても続くことでした。同じ台に固定すると、その目的が消えます。
外の1つの場所に置く
直し方は簡単で、状態を台の外へ出します。
Python
# 台ごとの辞書ではなく、共有の辞書1つに書く
sessions = {}どの台で書いても、どの台からでも読めます。これで台は入れ替え可能になります。
止まる所を1つにまとめた、という点は同じです。
違うのは、そこだけを守ればよくなることです。台は何台でも落としてよく、守るのは保存先だけになります。守る対象が減るのは前進です。
演習
複数の台にまたがって届いた出来事を処理し、読み取りの結果を順に返します。
要件
- sign_in は session を鍵にして user を覚える。どの台で起きても同じ場所へ入れる
- read は覚えたものを取り出して結果に入れる。無ければ None を入れる
- sign_out は覚えたものを消す。消したあとの read は None になる
ヒント
編集 ゆめさく編集部