Fix stacktrace when exiting with Ctrl + C

Fix #547
This commit is contained in:
Julien Duponchelle committed 2016-06-02 13:44:52 +02:00
1 parent f47eb326c7
commit 4afa5994e8
5 files changed
+31 -1

No files matched your search

+7
View File
@@ -125,10 +125,17 @@ class Controller:
:param compute_id: Compute server identifier
"""
compute = self.get_compute(compute_id)
yield from compute.close()
del self._computes[compute_id]
self.save()
self.notification.emit("compute.deleted", compute.__json__())
@asyncio.coroutine
def close(self):
log.info("Close controller")
for compute in self._computes.values():
yield from compute.close()
@property
def notification(self):
"""
+5
View File
@@ -93,6 +93,11 @@ class Compute:
self._connected = False
self._controller.notification.emit("compute.updated", self.__json__())
@asyncio.coroutine
def close(self):
self._connected = False
self._session.close()
@property
def version(self):
"""
+4 -1
View File
@@ -91,6 +91,9 @@ class WebServer:
yield from self._handler.finish_connections()
self._handler = None
if Config.instance().get_section_config("Server").getboolean("controller"):
yield from Controller.instance().close()
for module in MODULES:
log.debug("Unloading module {}".format(module.__name__))
m = module.instance()
@@ -182,6 +185,7 @@ class WebServer:
# Add a periodic callback to give a chance to process signals on Windows
# because asyncio.add_signal_handler() is not supported yet on that platform
# otherwise the loop runs outside of signal module's ability to trap signals.
def wakeup():
loop.call_later(0.5, wakeup)
loop.call_later(0.5, wakeup)
@@ -189,7 +193,6 @@ class WebServer:
server_config = Config.instance().get_section_config("Server")
ssl_context = None
if server_config.getboolean("ssl"):
if sys.platform.startswith("win"):