diff options
Diffstat (limited to 'CeibalEncuestaWeb/CeibalEncuesta.py')
-rw-r--r-- | CeibalEncuestaWeb/CeibalEncuesta.py | 47 |
1 files changed, 47 insertions, 0 deletions
diff --git a/CeibalEncuestaWeb/CeibalEncuesta.py b/CeibalEncuestaWeb/CeibalEncuesta.py index c9868cd..51d0209 100644 --- a/CeibalEncuestaWeb/CeibalEncuesta.py +++ b/CeibalEncuestaWeb/CeibalEncuesta.py @@ -1,6 +1,53 @@ +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" + |