示例#1
0
class StashBackend(Backend):
    def __init__(self, archive, algorithm='lru:///', serializer='none:///'):
        self.stash = Stash(archive, algorithm, serializer, key_transform=(self.key_encode, self.key_decode))

    @property
    def archive(self):
        return self.stash.archive

    @property
    def cache(self):
        return self.stash.cache

    def delete(self, keys):
        return self.stash.delete(keys)

    def flush(self):
        return self.stash.flush()

    def items(self):
        return self.stash.items()

    def iteritems(self):
        return self.stash.iteritems()

    def iterkeys(self):
        return self.stash.iterkeys()

    def itervalues(self):
        return self.stash.itervalues()

    def save(self):
        return self.stash.save()

    def __delitem__(self, key):
        return self.stash.__delitem__(key)

    def __getitem__(self, key):
        return self.stash.__getitem__(key)

    def __iter__(self):
        return self.stash.__iter__()

    def __len__(self):
        return self.stash.__len__()

    def __setitem__(self, key, value):
        return self.stash.__setitem__(key, value)

    def __getstate__(self):
        return {}

    def __setstate__(self, state):
        pass

    @staticmethod
    def key_encode(key):
        if type(key) is tuple:
            return '/'.join(key)

        return key

    @staticmethod
    def key_decode(key):
        key = str(key).split('/')

        if len(key) == 1:
            return key[0]

        return tuple(key)
示例#2
0
class StashBackend(Backend):
    def __init__(self, archive, algorithm='lru:///', serializer='none:///'):
        self.stash = Stash(archive,
                           algorithm,
                           serializer,
                           key_transform=(self.key_encode, self.key_decode))

    @property
    def archive(self):
        return self.stash.archive

    @property
    def cache(self):
        return self.stash.cache

    def delete(self, keys):
        return self.stash.delete(keys)

    def flush(self):
        return self.stash.flush()

    def items(self):
        return self.stash.items()

    def iteritems(self):
        return self.stash.iteritems()

    def iterkeys(self):
        return self.stash.iterkeys()

    def itervalues(self):
        return self.stash.itervalues()

    def save(self):
        return self.stash.save()

    def __delitem__(self, key):
        return self.stash.__delitem__(key)

    def __getitem__(self, key):
        return self.stash.__getitem__(key)

    def __iter__(self):
        return self.stash.__iter__()

    def __len__(self):
        return self.stash.__len__()

    def __setitem__(self, key, value):
        return self.stash.__setitem__(key, value)

    def __getstate__(self):
        return {}

    def __setstate__(self, state):
        pass

    @staticmethod
    def key_encode(key):
        if type(key) is tuple:
            return '/'.join(key)

        return key

    @staticmethod
    def key_decode(key):
        key = str(key).split('/')

        if len(key) == 1:
            return key[0]

        return tuple(key)