Skip to content

Commit 1787d68

Browse files
authored
Merge pull request #228 from ecmwf-projects/COPDS-2154-catalogue-ensure-session
Update catalogue session instantiation
2 parents a289eb1 + 6ed9dd7 commit 1787d68

File tree

2 files changed

+16
-10
lines changed

2 files changed

+16
-10
lines changed

cads_processing_api_service/config.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -202,6 +202,11 @@ def profiles_api_url(self) -> str:
202202
retrieve_api_broker_pool_size: int = 5
203203
retrieve_api_broker_max_overflow: int = 15
204204

205+
retrieve_api_catalogue_pool_timeout: float = 0.1
206+
retrieve_api_catalogue_pool_recycle: int = 60
207+
retrieve_api_catalogue_pool_size: int = 5
208+
retrieve_api_catalogue_max_overflow: int = 15
209+
205210
rate_limits_file: str | None = None
206211
rate_limits: RateLimitsConfig = pydantic.Field(default=RateLimitsConfig())
207212

cads_processing_api_service/db_utils.py

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -85,16 +85,17 @@ def get_catalogue_sessionmaker(
8585
sqlalchemy.orm.sessionmaker
8686
sqlalchemy.orm.sessionmaker object bound to the Catalogue database.
8787
"""
88-
catalogue_settings = cads_catalogue.config.ensure_settings()
89-
if mode == ConnectionMode.write:
90-
connection_string = catalogue_settings.connection_string
91-
elif mode == ConnectionMode.read:
92-
connection_string = catalogue_settings.connection_string_read
88+
if mode == ConnectionMode.read:
89+
read_only = True
90+
elif mode == ConnectionMode.write:
91+
read_only = False
9392
else:
9493
raise ValueError(f"Invalid connection mode: {str(mode)}")
95-
catalogue_engine = sqlalchemy.create_engine(
96-
connection_string,
97-
pool_timeout=0.1,
98-
pool_recycle=catalogue_settings.pool_recycle,
94+
catalogue_session = cads_catalogue.database.ensure_session_obj(
95+
read_only=read_only,
96+
pool_timeout=SETTINGS.retrieve_api_catalogue_pool_timeout,
97+
pool_recycle=SETTINGS.retrieve_api_catalogue_pool_recycle,
98+
pool_size=SETTINGS.retrieve_api_catalogue_pool_size,
99+
max_overflow=SETTINGS.retrieve_api_catalogue_max_overflow,
99100
)
100-
return sqlalchemy.orm.sessionmaker(catalogue_engine)
101+
return catalogue_session

0 commit comments

Comments
 (0)