webappでcookieを使う(GoogleAppEngine)

GoogleAppEngineで何かを作る時はapp-engine-patchを使っているのですが、ちょっとした実験等をする時はやっぱりwebappが手軽です。今回はセッションの実験をしたかったのですが、webappにはセッションを扱う仕組みがないので、自前でCookie周りの処理をしようと思ったら、Cookieを扱うライブラリも標準ではありませんでした。いやでも流石にCookieくらいはだれか書いてるだろうという事で調べてみたら、GoogleAppEngineのオンラインCookbookに記事が見つかりました。

この記事のソースコードを適当に保存して(僕はsimple_cookie.py)、以下のようにして使用します。このクラスを使うと辞書と同じ感覚でCookieを扱えます。Cookiesのコンストラクタでmax_ageを指定する事で、セッションの期限も決める事ができます。以下は簡単なログインとログアウトの例です。

from simple_cookie import Cookies

class Login(webapp.RequestHandler):
  def get(self):
    cookie = Cookies(self, max_age=300)
    if not cookie.has_key('sid'):
      cookie['sid'] = str(uuid.uuid4())  # 5分間維持するセッションID作成

	sid = cookie['sid']
	username = memcache.get(sid)

	# do something with session

class Logout(webapp.RequestHandler):
  def get(self):
    cookie = Cookies(self, max_age=300)
    if cookie.has_key('sid'):
      memcache.remove(cookie['sid'])
      del cookie['sid']  # セッションの削除

これでwebappでもセッションやCookieが扱えるようになりましたね。

Leave a Reply

Your email address will not be published. Required fields are marked *