]> git.openstreetmap.org Git - nominatim.git/blobdiff - nominatim/server/falcon/server.py
catch special async timeout error in servers
[nominatim.git] / nominatim / server / falcon / server.py
index b1859db6835f5554db83da17840b24b342557f65..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
 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
 
 
 from falcon.asgi import App, Request, Response
 
@@ -122,7 +123,7 @@ class FileLoggingMiddleware:
             writes logs for sucessful requests for search, reverse and lookup.
         """
         if not req_succeeded or resource is None or resp.status != 200\
             writes logs for sucessful requests for search, reverse and lookup.
         """
         if not req_succeeded or resource is None or resp.status != 200\
-            or resource.name not in ('reverse', 'search', 'lookup'):
+            or resource.name not in ('reverse', 'search', 'lookup', 'details'):
             return
 
         finish = dt.datetime.now(tz=dt.timezone.utc)
             return
 
         finish = dt.datetime.now(tz=dt.timezone.utc)
@@ -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)
               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:
 
     legacy_urls = api.config.get_bool('SERVE_LEGACY_URLS')
     for name, func in api_impl.ROUTES: