Cancel pending tasks although they are done

This commit is contained in:
Davte 2020-04-09 22:16:46 +02:00
parent 458cc0f5e7
commit 40f48e3b95

View File

@ -100,6 +100,22 @@ class Server:
self._working = False # Reset peer_is_sender self._working = False # Reset peer_is_sender
return 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): async def run_server(self):
self._server = await asyncio.start_server( self._server = await asyncio.start_server(
client_connected_cb=self.connect, client_connected_cb=self.connect,
@ -174,14 +190,8 @@ if __name__ == '__main__':
logging.info("Invalid port. Enter a valid port number!") logging.info("Invalid port. Enter a valid port number!")
_port = None _port = None
loop = asyncio.get_event_loop()
server = Server( server = Server(
host=_host, host=_host,
port=_port, port=_port,
) )
logging.info("Starting file bridging server...") server.run()
try:
loop.run_until_complete(server.run_server())
except KeyboardInterrupt:
logging.info("Stopping...")
loop.close()