Skip to content

Commit 4bfb3a7

Browse files
committed
add instrumentation to httpx client in catalog
1 parent 85300eb commit 4bfb3a7

File tree

3 files changed

+19
-9
lines changed

3 files changed

+19
-9
lines changed

services/catalog/src/simcore_service_catalog/core/application.py

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -46,8 +46,13 @@ def create_app(settings: ApplicationSettings | None = None) -> FastAPI:
4646
# STATE
4747
app.state.settings = settings
4848

49+
add_tracing = False
50+
if app.state.settings.CATALOG_TRACING:
51+
add_tracing = True
52+
setup_tracing(app, app.state.settings.CATALOG_TRACING, APP_NAME)
53+
4954
# STARTUP-EVENT
50-
app.add_event_handler("startup", create_on_startup(app))
55+
app.add_event_handler("startup", create_on_startup(app, add_tracing=add_tracing))
5156

5257
# PLUGIN SETUP
5358
setup_function_services(app)
@@ -65,8 +70,6 @@ def create_app(settings: ApplicationSettings | None = None) -> FastAPI:
6570
app.add_middleware(
6671
BaseHTTPMiddleware, dispatch=timing_middleware.add_process_time_header
6772
)
68-
if app.state.settings.CATALOG_TRACING:
69-
setup_tracing(app, app.state.settings.CATALOG_TRACING, APP_NAME)
7073

7174
app.add_middleware(GZipMiddleware)
7275

services/catalog/src/simcore_service_catalog/core/events.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ def _flush_finished_banner() -> None:
2626
print(APP_FINISHED_BANNER_MSG, flush=True) # noqa: T201
2727

2828

29-
def create_on_startup(app: FastAPI) -> EventCallable:
29+
def create_on_startup(app: FastAPI, add_tracing: bool = False) -> EventCallable:
3030
async def _() -> None:
3131
_flush_started_banner()
3232

@@ -37,7 +37,7 @@ async def _() -> None:
3737

3838
if app.state.settings.CATALOG_DIRECTOR:
3939
# setup connection to director
40-
await setup_director(app)
40+
await setup_director(app, add_tracing=add_tracing)
4141

4242
# FIXME: check director service is in place and ready. Hand-shake??
4343
# SEE https://github.com/ITISFoundation/osparc-simcore/issues/1728

services/catalog/src/simcore_service_catalog/services/director.py

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
from models_library.services_metadata_published import ServiceMetaDataPublished
1212
from models_library.services_types import ServiceKey, ServiceVersion
1313
from models_library.utils.json_serialization import json_dumps
14+
from servicelib.fastapi.tracing import setup_httpx_client_tracing
1415
from servicelib.logging_utils import log_context
1516
from starlette import status
1617
from tenacity.asyncio import AsyncRetrying
@@ -106,11 +107,13 @@ class DirectorApi:
106107
SEE services/catalog/src/simcore_service_catalog/api/dependencies/director.py
107108
"""
108109

109-
def __init__(self, base_url: str, app: FastAPI):
110+
def __init__(self, base_url: str, app: FastAPI, add_tracing: bool = False):
110111
self.client = httpx.AsyncClient(
111112
base_url=base_url,
112113
timeout=app.state.settings.CATALOG_CLIENT_REQUEST.HTTP_CLIENT_REQUEST_TOTAL_TIMEOUT,
113114
)
115+
if add_tracing:
116+
setup_httpx_client_tracing(self.client)
114117
self.vtag = app.state.settings.CATALOG_DIRECTOR.DIRECTOR_VTAG
115118

116119
async def close(self):
@@ -151,15 +154,19 @@ async def get_service(
151154
return ServiceMetaDataPublished.parse_obj(data[0])
152155

153156

154-
async def setup_director(app: FastAPI) -> None:
157+
async def setup_director(app: FastAPI, add_tracing: bool = False) -> None:
155158
if settings := app.state.settings.CATALOG_DIRECTOR:
156159
with log_context(
157160
_logger, logging.DEBUG, "Setup director at %s", f"{settings.base_url=}"
158161
):
159162
async for attempt in AsyncRetrying(**_director_startup_retry_policy):
160-
client = DirectorApi(base_url=settings.base_url, app=app)
163+
client = DirectorApi(
164+
base_url=settings.base_url, app=app, add_tracing=add_tracing
165+
)
161166
with attempt:
162-
client = DirectorApi(base_url=settings.base_url, app=app)
167+
client = DirectorApi(
168+
base_url=settings.base_url, app=app, add_tracing=add_tracing
169+
)
163170
if not await client.is_responsive():
164171
with suppress(Exception):
165172
await client.close()

0 commit comments

Comments
 (0)