Use daemon thread for ssh_connect
This commit is contained in:
@@ -222,7 +222,7 @@ class IndexHandler(MixinHandler, tornado.web.RequestHandler):
|
|||||||
chan = ssh.invoke_shell(term='xterm')
|
chan = ssh.invoke_shell(term='xterm')
|
||||||
chan.setblocking(0)
|
chan.setblocking(0)
|
||||||
worker = Worker(ssh, chan, dst_addr)
|
worker = Worker(ssh, chan, dst_addr)
|
||||||
IOLoop.current().call_later(DELAY, recycle, worker)
|
worker.src_addr = self.get_client_addr()
|
||||||
return worker
|
return worker
|
||||||
|
|
||||||
def ssh_connect_wrapped(self, future):
|
def ssh_connect_wrapped(self, future):
|
||||||
@@ -243,18 +243,18 @@ class IndexHandler(MixinHandler, tornado.web.RequestHandler):
|
|||||||
status = None
|
status = None
|
||||||
|
|
||||||
future = Future()
|
future = Future()
|
||||||
threading.Thread(
|
t = threading.Thread(target=self.ssh_connect_wrapped, args=(future,))
|
||||||
target=self.ssh_connect_wrapped, args=(future,)
|
t.setDaemon(True)
|
||||||
).start()
|
t.start()
|
||||||
|
|
||||||
try:
|
try:
|
||||||
worker = yield future
|
worker = yield future
|
||||||
except Exception as exc:
|
except Exception as exc:
|
||||||
status = str(exc)
|
status = str(exc)
|
||||||
else:
|
else:
|
||||||
worker.src_addr = self.get_client_addr()
|
|
||||||
worker_id = worker.id
|
worker_id = worker.id
|
||||||
workers[worker_id] = worker
|
workers[worker_id] = worker
|
||||||
|
IOLoop.current().call_later(DELAY, recycle, worker)
|
||||||
|
|
||||||
self.write(dict(id=worker_id, status=status))
|
self.write(dict(id=worker_id, status=status))
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user