Exemple #1
0
class TTLDict:

    """ Wrapper for Python Dict that removes entries after they expire """

    def __init__(self):
        self.data = {}
        self.bloom = Counting_Bloom()

    def contains(self, key):
        return key in self.data

    def add(self, key, value, TTL=timedelta(0, 300)):
        expire = datetime.utcnow() + TTL
        if key not in self.data:
            self.bloom.add(key)
        self.data[key] = (expire, value)

    def get(self, key):
        self._clean()
        return self.data.get(key, (None, ""))[1]

    def _clean(self):
        for (key, (TTL, value)) in self.data.iteritems():
            if TTL < datetime.utcnow():
                self.data.pop(key, None)
                self.bloom.remove(key)
Exemple #2
0
 def __init__(self):
     self.data = {}
     self.bloom = Counting_Bloom()