def __init__(self, storage_url=None, **kw): super(SessionStoreMemcached, self).__init__(storage_url=storage_url) try: self.engine = StorageEngineMemcached(self.storage_url).get_engine() except: raise SessionStoreError("Could not create connection " "for: %s " % self.storage_url)
class SessionStoreMemcached(SessionStore): """Session storage in memcached """ def __init__(self, storage_url=None, **kw): super(SessionStoreMemcached, self).__init__(storage_url=storage_url) try: self.engine = StorageEngineMemcached(self.storage_url).get_engine() except: raise SessionStoreError("Could not create connection " "for: %s " % self.storage_url) def __contains__(self, key): return self.engine.get(key) is not None def __getitem__(self, key): now = str(time.mktime(datetime.datetime.utcnow().timetuple())) value = self.engine.get(key) if value: atime, data = value.split(':', 1) decoded_data = self.decode(data) lifetime = decoded_data['lifetime'] #XXX right??? new_value = ':'.join((now, data)) self.engine.set(key, new_value, time=lifetime) return decoded_data else: raise KeyError def __setitem__(self, key, value): lifetime = value['lifetime'] now = str(time.mktime(datetime.datetime.utcnow().timetuple())) pickled = self.encode(value) mem_value = ':'.join((now, pickled)) self.engine.set(key, mem_value, time=lifetime) def __delitem__(self, key): self.engine.delete(key) def cleanup(self, timeout): pass