From 466ece769a32735d3fe68838df0e32b7636eb435 Mon Sep 17 00:00:00 2001 From: shay Date: Mon, 1 Mar 2021 12:52:34 +0200 Subject: [PATCH 1/2] shut down gracefully on SIGTERM. --- jupyter_matlab_proxy/app.py | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/jupyter_matlab_proxy/app.py b/jupyter_matlab_proxy/app.py index b9b6c98a..89b235c5 100644 --- a/jupyter_matlab_proxy/app.py +++ b/jupyter_matlab_proxy/app.py @@ -7,6 +7,7 @@ import asyncio import logging import json +import signal from . import settings from .app_state import AppState from .util.exceptions import LicensingError @@ -398,4 +399,18 @@ def main(): runner, host=app["settings"]["host_interface"], port=app["settings"]["app_port"] ) loop.run_until_complete(site.start()) - loop.run_forever() + + fu = loop.create_future() + # on SIGTERM setting the future result allowing the loop to exit. + loop.add_signal_handler(signal.SIGTERM, lambda : fu.set_result(True)) + loop.run_until_complete(fu) + + async def shutdown(): + logger.info("Shutting down MATLAB proxy-app") + await app.shutdown() + await app.cleanup() + # waiting here to allow matlab to finish exiting. + await asyncio.sleep(5) + + loop.run_until_complete(shutdown()) + From e6c869abfe9a834df806d027f5d7386ba2f53607 Mon Sep 17 00:00:00 2001 From: shay Date: Tue, 2 Mar 2021 10:51:54 +0200 Subject: [PATCH 2/2] loop.run_forever instead of loop.run_until_complete --- jupyter_matlab_proxy/app.py | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/jupyter_matlab_proxy/app.py b/jupyter_matlab_proxy/app.py index 89b235c5..5b7e6c30 100644 --- a/jupyter_matlab_proxy/app.py +++ b/jupyter_matlab_proxy/app.py @@ -400,10 +400,8 @@ def main(): ) loop.run_until_complete(site.start()) - fu = loop.create_future() - # on SIGTERM setting the future result allowing the loop to exit. - loop.add_signal_handler(signal.SIGTERM, lambda : fu.set_result(True)) - loop.run_until_complete(fu) + loop.add_signal_handler(signal.SIGTERM, lambda: loop.stop()) + loop.run_forever() async def shutdown(): logger.info("Shutting down MATLAB proxy-app")