Commit c924285d authored by 广宏伟's avatar 广宏伟

Merged in dev (pull request #62)

Dev
parents 9d737363 5130c43c
......@@ -218,9 +218,11 @@ class Coco:
self.run_httpd()
signal.signal(signal.SIGTERM, lambda x, y: self.shutdown())
while self.stop_evt.wait(5):
while True:
if self.stop_evt.is_set():
print("Coco receive term signal, exit")
break
time.sleep(3)
except KeyboardInterrupt:
self.stop_evt.set()
self.shutdown()
......
......@@ -61,9 +61,9 @@ class SSHConnection:
system_user.username, asset.ip, asset.port,
password_short, key_fingerprint,
))
return None, str(e)
return None, None, str(e)
except (socket.error, TimeoutError) as e:
return None, str(e)
return None, None, str(e)
return ssh, sock, None
def get_transport(self, asset, system_user):
......@@ -88,7 +88,8 @@ class SSHConnection:
else:
return None, sock, msg
def get_proxy_sock_v2(self, asset):
@staticmethod
def get_proxy_sock_v2(asset):
sock = None
domain = app_service.get_domain_detail_with_gateway(
asset.domain
......
......@@ -4,6 +4,7 @@
import os
import socket
import uuid
import eventlet
from flask_socketio import SocketIO, Namespace, join_room
from flask import Flask, request, current_app, redirect
......@@ -16,6 +17,8 @@ BASE_DIR = os.path.dirname(os.path.dirname(__file__))
logger = get_logger(__file__)
eventlet.monkey_patch()
class BaseNamespace(Namespace):
current_user = None
......@@ -23,7 +26,7 @@ class BaseNamespace(Namespace):
def on_connect(self):
self.current_user = self.get_current_user()
if self.current_user is None:
return redirect(current_app.config['LOGIN_URL'])
return redirect(self.socketio.config['LOGIN_URL'])
logger.debug("{} connect websocket".format(self.current_user))
def get_current_user(self):
......@@ -236,8 +239,8 @@ class HttpServer:
'LOGIN_URL': '/login'
}
init_kwargs = dict(
# async_mode="gevent",
async_mode="threading",
async_mode="eventlet",
# async_mode="threading",
ping_timeout=20,
ping_interval=10
)
......@@ -264,6 +267,7 @@ class HttpServer:
def run(self):
host = self.flask_app.config["BIND_HOST"]
port = self.flask_app.config["HTTPD_PORT"]
print('Starting websock server at {}:{}'.format(host, port))
self.socket_io.init_app(
self.flask_app,
**self.init_kwargs
......
......@@ -134,9 +134,9 @@ class CommandRecorder(metaclass=Singleton):
def func():
while not self.stop_evt.is_set():
data_set = self.queue.mget(self.batch_size, timeout=self.timeout)
logger.debug("Session command remain push: {}".format(
self.queue.qsize())
)
size = self.queue.qsize()
if size > 0:
logger.debug("Session command remain push: {}".format(size))
if not data_set:
continue
logger.debug("Send {} commands to server".format(len(data_set)))
......
......@@ -41,3 +41,4 @@ tornado==4.5.2
urllib3==1.22
wcwidth==0.1.7
Werkzeug==0.12.2
eventlet==0.22
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment