async def serve_development_app( app: Application, host: str, port: int, started: asyncio.Event | None = None, ) -> None: enable_pretty_logging() # setup up tornado to use asyncio AsyncIOMainLoop().install() server = HTTPServer(app) server.listen(port, host) if started: # at this point the server is accepting connection started.set() try: # block forever - tornado has already set up its own background tasks await asyncio.get_event_loop().create_future() finally: # stop accepting new connections server.stop() # wait for existing connections to complete await server.close_all_connections()