Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/CeibalEncuestaWeb/CeibalEncuesta.py
diff options
context:
space:
mode:
authorCode Raguet <ignacio.code@gmail.com>2013-07-04 18:51:36 (GMT)
committer Code Raguet <ignacio.code@gmail.com>2013-07-04 18:58:59 (GMT)
commit2f4887b4394f2d093309f6c24daea6b46b4478d4 (patch)
tree29d885e9454d6f86be649f482f322a1dde33a08f /CeibalEncuestaWeb/CeibalEncuesta.py
parent57444bf738bab7d367d552b59a20943b607a029b (diff)
add webser and venv requirements (for pip)
Diffstat (limited to 'CeibalEncuestaWeb/CeibalEncuesta.py')
-rw-r--r--CeibalEncuestaWeb/CeibalEncuesta.py47
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"
+