Exemple #1
0
 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)
Exemple #2
0
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