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)
def __init__(self): self.data = {} self.bloom = Counting_Bloom()