diff --git a/browsermobproxy/client.py b/browsermobproxy/client.py index 8a3dd3b..ac17a2e 100644 --- a/browsermobproxy/client.py +++ b/browsermobproxy/client.py @@ -34,7 +34,8 @@ def __init__(self, url, params=None, options=None): jcontent = json.loads(content) except Exception as e: raise Exception("Could not read Browsermob-Proxy json\n" - "Another server running on this port?\n%s..." % content[:512]) + "Another server running on this port?\n%s..."%content[:512]) + self.port = jcontent['port'] url_parts = self.host.split(":") self.proxy = url_parts[1][2:] + ":" + str(self.port) diff --git a/browsermobproxy/server.py b/browsermobproxy/server.py index a61e1a0..dca0e08 100644 --- a/browsermobproxy/server.py +++ b/browsermobproxy/server.py @@ -4,6 +4,7 @@ import socket import subprocess import time +import logging import sys @@ -43,10 +44,10 @@ def create_proxy(self, params=None): client = Client(self.url[7:], params) return client - def _is_listening(self): + def _is_listening(self, timeout = 1): try: socket_ = socket.socket(socket.AF_INET, socket.SOCK_STREAM) - socket_.settimeout(1) + socket_.settimeout(timeout) socket_.connect((self.host, self.port)) socket_.close() return True @@ -113,6 +114,11 @@ def start(self, options=None): log_path_name = os.path.join(log_path, log_file) self.log_file = open(log_path_name, 'w') + + if self._is_listening(.1): + logging.info("BrowserMob proxy already running. Won't start again.") + return + if self.win_env: self.process = self._start_on_windows() else: