import socket from multiprocessing import Process from time import sleep from flask import Flask PORT = 9004 print 'Opening web server' class WebServer(object): def start(self): self.p = Process(target=self._start) self.p.start() try: retry = 0 while not self.is_alive(): if retry == 5: raise Exception("Webserver start failed") retry += 1 sleep(1) finally: self.stop() def is_alive(self): res = False try: s = socket.socket() s.connect(("localhost", PORT)) res = True except socket.error: pass finally: s.close() return res def stop(self): self.p.terminate() def _start(self): webserver = Flask("API server") webserver.run('localhost', PORT) if __name__ == '__main__': print "Opening browser"