]> git.openstreetmap.org Git - nominatim.git/commitdiff
catch special async timeout error in servers
authorSarah Hoffmann <lonvia@denofr.de>
Sat, 27 Jan 2024 18:53:13 +0000 (19:53 +0100)
committerSarah Hoffmann <lonvia@denofr.de>
Sat, 27 Jan 2024 19:57:23 +0000 (20:57 +0100)
In Python <= 3.10 this is not yet the same as TimeoutError.

Fixes #3303.

nominatim/server/falcon/server.py
nominatim/server/starlette/server.py

index 5ec418a6f3b4aa5ad4c1f287506cb843b3b03504..00036795ae67b80f5c89726559bdd9860abb0dcb 100644 (file)
@@ -10,6 +10,7 @@ Server implementation using the falcon webserver framework.
 from typing import Optional, Mapping, cast, Any, List
 from pathlib import Path
 import datetime as dt
+import asyncio
 
 from falcon.asgi import App, Request, Response
 
@@ -164,6 +165,8 @@ def get_application(project_dir: Path,
               middleware=middleware)
     app.add_error_handler(HTTPNominatimError, nominatim_error_handler)
     app.add_error_handler(TimeoutError, timeout_error_handler)
+    # different from TimeoutError in Python <= 3.10
+    app.add_error_handler(asyncio.TimeoutError, timeout_error_handler)
 
     legacy_urls = api.config.get_bool('SERVE_LEGACY_URLS')
     for name, func in api_impl.ROUTES:
index 33ab22c7bcee7c2b1994ab56496acec886f38d30..f793dfde30a274533e2750f7a09a00a792710494 100644 (file)
@@ -10,6 +10,7 @@ Server implementation using the starlette webserver framework.
 from typing import Any, Optional, Mapping, Callable, cast, Coroutine, Dict, Awaitable
 from pathlib import Path
 import datetime as dt
+import asyncio
 
 from starlette.applications import Starlette
 from starlette.routing import Route
@@ -144,7 +145,8 @@ def get_application(project_dir: Path,
         middleware.append(Middleware(FileLoggingMiddleware, file_name=log_file))
 
     exceptions: Dict[Any, Callable[[Request, Exception], Awaitable[Response]]] = {
-        TimeoutError: timeout_error
+        TimeoutError: timeout_error,
+        asyncio.TimeoutError: timeout_error
     }
 
     async def _shutdown() -> None: