From b5158dee470326a5a7149364e2cdd0ce8087c0e9 Mon Sep 17 00:00:00 2001 From: Alok Saldanha Date: Thu, 19 Sep 2019 11:30:59 -0400 Subject: [PATCH] GH-4 properly reference cache.prune also added logging --- cellxgene_gateway/prune_process_cache.py | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/cellxgene_gateway/prune_process_cache.py b/cellxgene_gateway/prune_process_cache.py index a3c891e..668eb03 100644 --- a/cellxgene_gateway/prune_process_cache.py +++ b/cellxgene_gateway/prune_process_cache.py @@ -17,6 +17,7 @@ from cellxgene_gateway.env import ttl class PruneProcessCache: def __init__(self, cache): self.cache = cache + self.expire_seconds = (3600 if ttl is None else int(ttl)) def __call__(self): while True: @@ -25,16 +26,14 @@ class PruneProcessCache: def prune(self): timestamp = current_time_stamp() - - processes_to_delete = [] - for p in self.cache.entry_list: - if timestamp - p.timestamp > (3600 if ttl is None else ttl): - processes_to_delete.append(p) - processes_to_delete - + cutoff = timestamp - self.expire_seconds + processes_to_delete = [p for p in self.cache.entry_list if p.timestamp < cutoff] + processes_to_keep = [p for p in self.cache.entry_list if not p.timestamp < cutoff] + logging.getLogger("werkzeug").debug(f"Cutoff {cutoff} = timestamp {timestamp} - expire seconds {self.expire_seconds} , keeping {processes_to_keep}") + for process in processes_to_delete: try: - cache.prune(process) + logging.getLogger("werkzeug").info(f"pruning process {process.pid} ({process.dataset})") + self.cache.prune(process) except Exception: - logging.getLogger("werkzeug").exception("failed to prune process") - + logging.getLogger("werkzeug").exception("failed to prune process {process.pid} ({process.dataset})")