Fix: Changed LLCM to use gevent 32/7332/1
authorpeusterm <manuel.peuster@uni-paderborn.de>
Tue, 19 Mar 2019 16:05:57 +0000 (17:05 +0100)
committerpeusterm <manuel.peuster@uni-paderborn.de>
Tue, 19 Mar 2019 16:05:57 +0000 (17:05 +0100)
Change-Id: I232e529cd0b35614c697e9c41d12b9b62955a87a
Signed-off-by: peusterm <manuel.peuster@uni-paderborn.de>
src/emuvim/api/tango/__init__.py
src/emuvim/api/tango/llcm.py

index 3fe6a16..ea3bc54 100755 (executable)
@@ -72,3 +72,6 @@ class TangoLLCMEndpoint(object):
 
     def _api_server_thread(self):
         llcm.start_rest_api(self.ip, self.port, self.dcs)
+
+    def stop(self):
+        llcm.stop_rest_api()
index aae6be1..eaa0b5e 100755 (executable)
@@ -39,6 +39,7 @@ import threading
 from docker import DockerClient
 from flask import Flask, request
 import flask_restful as fr
+from gevent.pywsgi import WSGIServer
 from subprocess import Popen
 import ipaddress
 import copy
@@ -1028,6 +1029,7 @@ def initialize_GK():
 GK = None
 initialize_GK()
 # setup Flask
+http_server = None
 app = Flask(__name__)
 app.config['MAX_CONTENT_LENGTH'] = 512 * 1024 * 1024  # 512 MB max upload
 api = fr.Api(app)
@@ -1039,14 +1041,22 @@ api.add_resource(Exit, '/emulator/exit')
 
 
 def start_rest_api(host, port, datacenters=dict()):
+    global http_server
     GK.dcs = datacenters
     GK.net = get_dc_network()
     # start the Flask server (not the best performance but ok for our use case)
-    app.run(host=host,
-            port=port,
-            debug=True,
-            use_reloader=False  # this is needed to run Flask in a non-main thread
-            )
+    # app.run(host=host,
+    #        port=port,
+    #        debug=True,
+    #        use_reloader=False  # this is needed to run Flask in a non-main thread
+    #        )
+    http_server = WSGIServer((host, port), app, log=open("/dev/null", "w"))
+    http_server.serve_forever()
+
+
+def stop_rest_api():
+    if http_server:
+        http_server.close()
 
 
 def ensure_dir(name):