def purge_memory(self, date=current_time()): ''' @summary: memory上のキャッシュを削除します ''' delete_key = set() try: for key, cache in self.cache.iteritems(): if cache.expiration_date <= current_time(): delete_key.add(key) for key in delete_key: del self.cache[key] #logger.debug("PURGE MEMORY: %s" % key) except: raise
def purge(self, date=current_time(), is_async=False): ''' @summary: 現在保持しているキャッシュの中で有効期限を過ぎたものを削除します purge_*は引数に指定した時刻、関数呼び出し時刻を基準に削除します ''' try: self.purge_file(date, is_async) self.purge_memory(date) except: raise
def purge_file(self, date=current_time(), is_async=False): ''' @summary: 期限切れ、または不正なスタイルのキャッシュファイルを削除します ''' if not os.path.isdir(self.cache_dir): raise IOError("%s is not directory." % self.cache_dir) try: root, _, files = os.walk(self.cache_dir).next() if not len(files): raise StopIteration except StopIteration: #logger.debug("There are no cache-file at %s" % self.cache_dir) return if is_async: self._purge_file_async(date, root, files) else: self._purge_file(date, root, files)