Skip to content

Commit 9a710c2

Browse files
committed
closes #1 : graceful shutdown on various signals
1 parent 931d687 commit 9a710c2

File tree

2 files changed

+21
-3
lines changed

2 files changed

+21
-3
lines changed

jupyter_matlab_proxy/app.py

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -393,6 +393,10 @@ def create_app():
393393
return app
394394

395395

396+
def get_supported_termination_signals():
397+
return [signal.SIGHUP, signal.SIGINT, signal.SIGQUIT, signal.SIGTERM]
398+
399+
396400
def main():
397401

398402
logger = mw_logger.get(init=True)
@@ -408,8 +412,12 @@ def main():
408412
runner, host=app["settings"]["host_interface"], port=app["settings"]["app_port"]
409413
)
410414
loop.run_until_complete(site.start())
411-
412-
loop.add_signal_handler(signal.SIGTERM, lambda: loop.stop())
415+
416+
# Register handlers to trap termination signals
417+
for signal in get_supported_termination_signals():
418+
logger.info(f"Installing handler for signal: {signal} ")
419+
loop.add_signal_handler(signal, lambda: loop.stop())
420+
413421
loop.run_forever()
414422

415423
async def shutdown():
@@ -420,4 +428,3 @@ async def shutdown():
420428
await asyncio.sleep(5)
421429

422430
loop.run_until_complete(shutdown())
423-

jupyter_matlab_proxy/app_state.py

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -452,6 +452,17 @@ async def stop_matlab(self):
452452
xvfb.terminate()
453453
waiters.append(xvfb.wait())
454454

455+
# Clean up matlab_ready_file
456+
try:
457+
with open(self.settings["matlab_ready_file"], "r") as mrf:
458+
port_in_matlab_ready_file = mrf.read()
459+
if str(self.matlab_port) == port_in_matlab_ready_file:
460+
logger.info("Cleaning up matlab_ready_file...")
461+
self.settings["matlab_ready_file"].unlink()
462+
except FileNotFoundError:
463+
# Some other process deleted this file
464+
pass
465+
455466
# Wait for termination
456467
for waiter in waiters:
457468
await waiter

0 commit comments

Comments
 (0)