diff --git a/README.md b/README.md index 349e915..3200042 100644 --- a/README.md +++ b/README.md @@ -73,6 +73,7 @@ Optional environment variables: * `EXTERNAL_PROTOCOL` - typically http when running locally, can be https when deployed if the gateway is behind a load balancer or reverse proxy that performs https termination. Default value "http" * `GATEWAY_IP` - ip addess of instance gateway is running on, mostly used to display SSH instructions. Defaults to `socket.gethostbyname(socket.gethostname())` * `GATEWAY_PORT` - local port that the gateway should bind to, defaults to 5005 +* `GATEWAY_EXPIRE_SECONDS` - time in seconds that a cellxgene process will remain idle before being terminated. Defaults to 3600 (one hour) * `GATEWAY_EXTRA_SCRIPTS` - JSON array of script paths, will be embedded into each page and forwarded with `--scripts` to cellxgene server * `GATEWAY_ENABLE_ANNOTATIONS` - Set to `true` or to `1` to enable cellxgene annotations. * `GATEWAY_ENABLE_BACKED_MODE` - Set to `true` or to `1` to load AnnData in file-backed mode. This saves memory and speeds up launch time but may reduce overall performance. diff --git a/cellxgene_gateway/env.py b/cellxgene_gateway/env.py index 26288c4..5cf0c1b 100644 --- a/cellxgene_gateway/env.py +++ b/cellxgene_gateway/env.py @@ -23,7 +23,9 @@ external_protocol = os.environ.get( ) ip = os.environ.get("GATEWAY_IP") extra_scripts = os.environ.get("GATEWAY_EXTRA_SCRIPTS") -ttl = os.environ.get("GATEWAY_TTL") +expire_seconds = int( + os.environ.get("GATEWAY_EXPIRE_SECONDS", os.environ.get("GATEWAY_TTL", "3600")) +) enable_annotations = os.environ.get("GATEWAY_ENABLE_ANNOTATIONS", "").lower() in [ "true", "1", @@ -50,7 +52,7 @@ optional_env_vars = { "GATEWAY_IP": ip, "GATEWAY_PORT": gateway_port, "GATEWAY_EXTRA_SCRIPTS": extra_scripts, - "GATEWAY_TTL": ttl, + "GATEWAY_EXPIRE_SECONDS": expire_seconds, "GATEWAY_ENABLE_ANNOTATIONS": enable_annotations, "GATEWAY_ENABLE_BACKED_MODE": enable_backed_mode, "GATEWAY_LOG_LEVEL": log_level, diff --git a/cellxgene_gateway/prune_process_cache.py b/cellxgene_gateway/prune_process_cache.py index 29eafb4..b22b80e 100644 --- a/cellxgene_gateway/prune_process_cache.py +++ b/cellxgene_gateway/prune_process_cache.py @@ -18,7 +18,7 @@ logger = logging.getLogger(__name__) class PruneProcessCache: def __init__(self, cache): self.cache = cache - self.expire_seconds = 3600 if env.ttl is None else int(env.ttl) + self.expire_seconds = env.expire_seconds def __call__(self): while True: diff --git a/tests/test_prune_process_cache.py b/tests/test_prune_process_cache.py index b500007..00b9321 100644 --- a/tests/test_prune_process_cache.py +++ b/tests/test_prune_process_cache.py @@ -15,7 +15,7 @@ key = CacheKey( class TestPruneProcessCache(unittest.TestCase): @patch("cellxgene_gateway.util.current_time_stamp", new=lambda: 0) - @patch("cellxgene_gateway.env.ttl", new="10") + @patch("cellxgene_gateway.env.expire_seconds", new=10) @patch("cellxgene_gateway.cache_entry.CacheEntry") @patch("cellxgene_gateway.cache_entry.CacheEntry") def test_GIVEN_one_old_one_new_THEN_prune_old(self, old, new):