Skip to content

Commit 0ff6025

Browse files
Merge pull request #238 from askui/fix/otel_integration
fix: make otel-sdk default dependency, import otel instrumentors safely
2 parents ad198c4 + e633edc commit 0ff6025

2 files changed

Lines changed: 17 additions & 5 deletions

File tree

pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ dependencies = [
1313
"httpx>=0.28.1",
1414
"Jinja2>=3.1.4",
1515
"openai>=1.61.1",
16+
"opentelemetry-sdk>=1.38.0",
1617
"pillow>=11.0.0",
1718
"py-machineid>=0.7.0",
1819
"pydantic-settings>=2.9.1",
@@ -223,7 +224,6 @@ bedrock = [
223224
otel = [
224225
"prometheus-fastapi-instrumentator>=7.1.0",
225226
"opentelemetry-api>=1.38.0",
226-
"opentelemetry-sdk>=1.38.0",
227227
"opentelemetry-instrumentation-fastapi>=0.59b0",
228228
"opentelemetry-exporter-otlp-proto-http>=1.38.0",
229229
"opentelemetry-instrumentation-httpx>=0.59b0",

src/askui/telemetry/otel.py

Lines changed: 16 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,5 @@
11
from fastapi import FastAPI
22
from opentelemetry import trace
3-
from opentelemetry.exporter.otlp.proto.http.trace_exporter import OTLPSpanExporter
4-
from opentelemetry.instrumentation.fastapi import FastAPIInstrumentor
5-
from opentelemetry.instrumentation.httpx import HTTPXClientInstrumentor
6-
from opentelemetry.instrumentation.sqlalchemy import SQLAlchemyInstrumentor
73
from opentelemetry.sdk.resources import Resource
84
from opentelemetry.sdk.trace import TracerProvider
95
from opentelemetry.sdk.trace.export import BatchSpanProcessor
@@ -51,6 +47,22 @@ def setup_opentelemetry_tracing(app: FastAPI, settings: OtelSettings) -> None:
5147
None
5248
5349
"""
50+
try:
51+
from opentelemetry.exporter.otlp.proto.http.trace_exporter import ( # type: ignore[import-not-found]
52+
OTLPSpanExporter,
53+
)
54+
from opentelemetry.instrumentation.fastapi import ( # type: ignore[import-not-found]
55+
FastAPIInstrumentor,
56+
)
57+
from opentelemetry.instrumentation.httpx import ( # type: ignore[import-not-found]
58+
HTTPXClientInstrumentor,
59+
)
60+
from opentelemetry.instrumentation.sqlalchemy import ( # type: ignore[import-not-found]
61+
SQLAlchemyInstrumentor,
62+
)
63+
except ImportError:
64+
return
65+
5466
resource = Resource.create(
5567
{
5668
"service.name": settings.service_name,

0 commit comments

Comments
 (0)