From 40f48e3b95447e65f5cfa44077af859e35dab8d3 Mon Sep 17 00:00:00 2001 From: Davte Date: Thu, 9 Apr 2020 22:16:46 +0200 Subject: [PATCH] Cancel pending tasks although they are done --- src/server.py | 24 +++++++++++++++++------- 1 file changed, 17 insertions(+), 7 deletions(-) diff --git a/src/server.py b/src/server.py index 712b68c..4b02d5d 100644 --- a/src/server.py +++ b/src/server.py @@ -100,6 +100,22 @@ class Server: self._working = False # Reset peer_is_sender return + def run(self): + loop = asyncio.get_event_loop() + logging.info("Starting file bridging server...") + try: + loop.run_until_complete(self.run_server()) + except KeyboardInterrupt: + logging.info("Stopping...") + # Cancel connection tasks (they should be done but are pending) + for task in asyncio.all_tasks(loop): + task.cancel() + loop.run_until_complete( + self.server.wait_closed() + ) + loop.close() + logging.info("Stooped.") + async def run_server(self): self._server = await asyncio.start_server( client_connected_cb=self.connect, @@ -174,14 +190,8 @@ if __name__ == '__main__': logging.info("Invalid port. Enter a valid port number!") _port = None - loop = asyncio.get_event_loop() server = Server( host=_host, port=_port, ) - logging.info("Starting file bridging server...") - try: - loop.run_until_complete(server.run_server()) - except KeyboardInterrupt: - logging.info("Stopping...") - loop.close() + server.run()