diff --git a/py3cache/PyInMem.py b/py3cache/PyInMem.py index f73dec2d5da4a1ff3bd1dd5b1ee4f759d52ffb5f..5777d5b7452778fb0c4acf2cd362c0b9416a6ac3 100644 --- a/py3cache/PyInMem.py +++ b/py3cache/PyInMem.py @@ -4,6 +4,7 @@ Python Mem Cache with cache evict callback """ import configparser +import sys import os from time import time @@ -67,6 +68,16 @@ class PyInMem: if self.callback is not None: self.callback('evict', region, key) + def evict_expired(self, region): + if sys.version < '3': + items = self.cachetime[region].items() + else: + items = self.cachetime[region].copy().items() + + for (key, ctime) in items: + if (ctime.expire > 0) and (time() - ctime.begin > ctime.expire): + self.evict(region, key) + def _clear(self, region): self.regions[region].clear() self.cachetime[region].clear()