From a59ffcc07042376afc607807d27da25516c23be4 Mon Sep 17 00:00:00 2001 From: Macartur Sousa Date: Fri, 19 May 2017 17:34:54 -0300 Subject: [PATCH] Improve websocket connection This commit will improve the websocket to use gevent + gevent-websocket to avoid the error KeyError: 'Session is disconnected' Fix #416 --- etc/kytos/logging.ini | 9 ++------- kytos/core/api_server.py | 2 +- kytos/core/websocket.py | 2 +- requirements.txt | 2 ++ 4 files changed, 6 insertions(+), 9 deletions(-) diff --git a/etc/kytos/logging.ini b/etc/kytos/logging.ini index 984ab1492..4d6041467 100644 --- a/etc/kytos/logging.ini +++ b/etc/kytos/logging.ini @@ -5,7 +5,7 @@ keys: console,syslog keys: console,syslog [loggers] -keys: root,api_server,socket +keys: root,api_server [formatter_syslog] format: %(name)s:%(levelname)s %(module)s:%(lineno)d: %(message)s @@ -29,10 +29,5 @@ handlers: syslog,console [logger_api_server] level: INFO -qualname: werkzeug -handlers: - -[logger_socket] -level: ERROR -qualname: engineio +qualname: geventwebsocket.handler handlers: diff --git a/kytos/core/api_server.py b/kytos/core/api_server.py index 5c9ea6b2a..51a9bf12d 100644 --- a/kytos/core/api_server.py +++ b/kytos/core/api_server.py @@ -26,7 +26,7 @@ def __init__(self, app_name, debug=False): self.set_debug(debug) self.app = Flask(app_name, root_path=self.flask_dir) - self.server = SocketIO(self.app, async_mode='threading') + self.server = SocketIO(self.app) def set_debug(self, debug): """Method used to set debug mode. diff --git a/kytos/core/websocket.py b/kytos/core/websocket.py index 90fdc77ce..a8e5c8db6 100644 --- a/kytos/core/websocket.py +++ b/kytos/core/websocket.py @@ -43,7 +43,7 @@ def update_buffer(self): self.stream.truncate(0) if len(self.buff) >= self.buffer_max_size: - new_size = self.buffer_max_size/2 + new_size = int(self.buffer_max_size/2) self.buff = self.buff[new_size:] def handle_messages(self, json): diff --git a/requirements.txt b/requirements.txt index f0a0a3ca3..0a3f228e2 100644 --- a/requirements.txt +++ b/requirements.txt @@ -9,3 +9,5 @@ python-daemon>=2.1.2 # Maybe we need to remove this on the future setuptools>=34.0.0 jinja2 +gevent-websocket +gevent