From 455e0cd087d6bb2fc780d2649d4188f9183a2369 Mon Sep 17 00:00:00 2001 From: Alok Saldanha Date: Tue, 29 Oct 2019 21:18:42 -0400 Subject: [PATCH] #9 skip ports that are in use --- cellxgene_gateway/backend_cache.py | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/cellxgene_gateway/backend_cache.py b/cellxgene_gateway/backend_cache.py index 3fbf306..c038101 100644 --- a/cellxgene_gateway/backend_cache.py +++ b/cellxgene_gateway/backend_cache.py @@ -20,6 +20,11 @@ from cellxgene_gateway.subprocess_backend import SubprocessBackend process_backend = SubprocessBackend() +def is_port_in_use(port): + import socket + with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s: + return s.connect_ex(('localhost', port)) == 0 + class BackendCache: def __init__(self): self.entry_list = [] @@ -49,7 +54,7 @@ class BackendCache: def create_entry(self, dataset, file_path, scripts): port = 8000 existing_ports = self.get_ports() - while port in existing_ports: + while (port in existing_ports) or is_port_in_use(port): port += 1 entry = CacheEntry.for_dataset(dataset, file_path, port)