Mercurial > eagle-eye
view ikweb/ikweb/gaeo/session/memcache.py @ 247:7747bbe5b68e
start to develope Information Exchange Center of Ikariam Game. (prototpye)
author | "Hisn Yi, Chen <ossug.hychen@gmail.com>" |
---|---|
date | Mon, 01 Dec 2008 00:27:22 +0800 |
parents | |
children |
line wrap: on
line source
# -*- coding: utf-8 -*- # # Copyright 2008 Lin-Chieh Shangkuan & Liang-Heng Chen # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. # """ GAEO Session - memcache store """ import random import pickle import logging from google.appengine.api import memcache from gaeo import session class MemcacheSession(session.Session): """ session that uses memcache """ def __init__(self, hnd, name = 'gaeo_session', timeout = 60 * 60): super(MemcacheSession, self).__init__(hnd, name, timeout) # check from cookie if name in hnd.request.cookies: self._id = hnd.request.cookies[name] session_data = memcache.get(self._id) if session_data: self.update(pickle.loads(session_data)) memcache.set(self._id, session_data, timeout) else: # not in the cookie, set it cookie = '%s=%s' % (name, self._id) hnd.response.headers.add_header('Set-Cookie', cookie) def put(self): if not self._invalidated: memcache.set(self._id, pickle.dumps(self.copy()), self._timeout) def invalidate(self): """Invalidates the session data""" self._hnd.response.headers.add_header( 'Set-Cookie', '%s=; expires=Thu, 1-Jan-1970 00:00:00 GMT;' % self._name ) memcache.delete(self._id) self.clear() self._invalidated = True