From a651c3fad9a3980abbb7793704f3e3a7fb4efcb9 Mon Sep 17 00:00:00 2001 From: Luke Murphy Date: Thu, 23 Jul 2020 12:36:28 +0200 Subject: [PATCH] Respond to ctrl-c exits --- dropship.py | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/dropship.py b/dropship.py index 130fe4f..8f74fd2 100644 --- a/dropship.py +++ b/dropship.py @@ -5,6 +5,7 @@ import logging import os import subprocess from pathlib import Path +from signal import SIGINT, SIGTERM import asyncio_glib import gi @@ -142,13 +143,18 @@ class DropShip: async def main(): """The application entrypoint.""" - dropship = DropShip() - await dropship._running + try: + dropship = DropShip() + await dropship._running + except asyncio.CancelledError: + pass if __name__ == "__main__": try: - # TODO(decentral1se): also handle Ctrl-C escape from terminal - loop.run_until_complete(main()) + main_task = asyncio.ensure_future(main()) + loop.add_signal_handler(SIGINT, main_task.cancel) + loop.add_signal_handler(SIGTERM, main_task.cancel) + loop.run_until_complete(main_task) finally: loop.close()