From f4cdcb995c576313b32ab268ee246c627b25d11b Mon Sep 17 00:00:00 2001 From: Sarah Hoffmann Date: Sat, 8 Jul 2023 19:38:54 +0200 Subject: [PATCH] force a fixed pool size and make it configurable --- nominatim/api/core.py | 2 ++ settings/env.defaults | 5 +++++ 2 files changed, 7 insertions(+) diff --git a/nominatim/api/core.py b/nominatim/api/core.py index 2a19d974..32d420db 100644 --- a/nominatim/api/core.py +++ b/nominatim/api/core.py @@ -54,6 +54,7 @@ class NominatimAPIAsync: return dsn = self.config.get_database_params() + pool_size = self.config.get_int('API_POOL_SIZE') query = {k: v for k, v in dsn.items() if k not in ('user', 'password', 'dbname', 'host', 'port')} @@ -65,6 +66,7 @@ class NominatimAPIAsync: host=dsn.get('host'), port=int(dsn['port']) if 'port' in dsn else None, query=query) engine = sa_asyncio.create_async_engine(dburl, future=True, + max_overflow=0, pool_size=pool_size, echo=self.config.get_bool('DEBUG_SQL')) try: diff --git a/settings/env.defaults b/settings/env.defaults index 9c2f7cac..f9f590da 100644 --- a/settings/env.defaults +++ b/settings/env.defaults @@ -209,6 +209,11 @@ NOMINATIM_POLYGON_OUTPUT_MAX_TYPES=1 # under .php NOMINATIM_SERVE_LEGACY_URLS=yes +# Maximum number of connection a single API object can use. (Python API only) +# When running Nominatim as a server, then this is the maximum number +# of connections _per worker_. +NOMINATIM_API_POOL_SIZE=10 + ### Log settings # # The following options allow to enable logging of API requests.