gae-sessionsの詳細は、https://github.com/dound/gae-sessions で確認してください。
簡単に説明すると、
$ git clone git://github.com/dound/gae-sessions.gitでダウンロードして、GAE のアプリケーションディレクトリに移動し、appengine_config.py に
from gaesessions import SessionMiddleware;
def webapp_add_wsgi_middleware(app):
app = SessionMiddleware(app,
cookie_key="32文字以上のパスワード",
lifetime=datetime.timedelta(days=有効期限));
return app;
と設定するだけです。ただし、この設定ではセッション情報はデータストアにも保存されます。
gaesessions の動きとしては、
- まず、sessionID で memcache を探す
- memcache にデータがなければ、データストアからデータを取得する
ソースを見る限り、memcache でヒットしなくても read の際は、memcache にセットしなおさないため、次に write が行われるまで、常にデータストアを見続けるようです。
GAE の課金体系ではデータストアの read/write が一定量を超えると有料になるので、データストアの read/write はできるだけ避けたいところです。
そこで no_datastore を使えば、gaesessions では全くデータストアが使われなくなります。
no_datastore の設定は非常に簡単で、appengine_config.py で
def webapp_add_wsgi_middleware(app):
app = SessionMiddleware(app,
cookie_key="32文字以上のパスワード",
lifetime=datetime.timedelta(days=有効期限),
no_datastore=True);
return app;
とするだけです。ただし、この設定をすると memcache にデータがなくなるとデータ自体が失われてしまうため、重要な情報をセッションに入れられなくなります。
タグ:GAE

