X-Git-Url: https://git.openstreetmap.org./nominatim.git/blobdiff_plain/3742fa2929619a4c54a50d3e79e0eeadb4d6ca6f..9659afbade47d1ec6d5359b2b21e1e874516ed80:/src/nominatim_db/cli.py diff --git a/src/nominatim_db/cli.py b/src/nominatim_db/cli.py index 41684fa1..93278668 100644 --- a/src/nominatim_db/cli.py +++ b/src/nominatim_db/cli.py @@ -14,6 +14,7 @@ import logging import os import sys import argparse +import asyncio from pathlib import Path from .config import Configuration @@ -170,22 +171,30 @@ class AdminServe: raise UsageError("PHP frontend not configured.") run_php_server(args.server, args.project_dir / 'website') else: - import uvicorn # pylint: disable=import-outside-toplevel - server_info = args.server.split(':', 1) - host = server_info[0] - if len(server_info) > 1: - if not server_info[1].isdigit(): - raise UsageError('Invalid format for --server parameter. Use :') - port = int(server_info[1]) - else: - port = 8088 + asyncio.run(self.run_uvicorn(args)) - server_module = importlib.import_module(f'nominatim_api.server.{args.engine}.server') + return 0 - app = server_module.get_application(args.project_dir) - uvicorn.run(app, host=host, port=port) - return 0 + async def run_uvicorn(self, args: NominatimArgs) -> None: + import uvicorn # pylint: disable=import-outside-toplevel + + server_info = args.server.split(':', 1) + host = server_info[0] + if len(server_info) > 1: + if not server_info[1].isdigit(): + raise UsageError('Invalid format for --server parameter. Use :') + port = int(server_info[1]) + else: + port = 8088 + + server_module = importlib.import_module(f'nominatim_api.server.{args.engine}.server') + + app = server_module.get_application(args.project_dir) + + config = uvicorn.Config(app, host=host, port=port) + server = uvicorn.Server(config) + await server.serve() def get_set_parser() -> CommandlineParser: