Support for cooperative signal handling of uvicorn v0.29.0

This commit is contained in:
grossmj 2024-04-03 15:58:10 +07:00
parent fd60bda2c2
commit 9b66d939d2
No known key found for this signature in database
GPG Key ID: 0A2D76AC45EA25CD
2 changed files with 7 additions and 4 deletions

View File

@ -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__":

View File

@ -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)