diff --git a/gns3server/main.py b/gns3server/main.py index 624612f3..ebd8b112 100644 --- a/gns3server/main.py +++ b/gns3server/main.py @@ -29,6 +29,7 @@ import gns3server.utils.get_resource import os import sys +import asyncio def daemonize(): @@ -70,7 +71,10 @@ def main(): daemonize() from gns3server.server import Server - Server().run() + try: + asyncio.run(Server().run()) + except KeyboardInterrupt: + pass if __name__ == "__main__": diff --git a/gns3server/server.py b/gns3server/server.py index abbfa5db..a2bff6d4 100644 --- a/gns3server/server.py +++ b/gns3server/server.py @@ -239,7 +239,7 @@ class Server: log.critical("Can't write pid file %s: %s", path, str(e)) sys.exit(1) - def run(self): + async def run(self): args = self._parse_arguments(sys.argv[1:]) @@ -333,8 +333,7 @@ class Server: uvicorn_logger.propagate = False server = uvicorn.Server(config) - loop = asyncio.get_event_loop() - loop.run_until_complete(server.serve()) + await server.serve() except Exception as e: log.critical(f"Critical error while running the server: {e}", exc_info=1)