Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/CeibalEncuestaWeb/CeibalEncuesta.py
blob: 51d020911de19f40412753ed825abfcab95e3c91 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
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"