Skip to content

Commit 9b1c681

Browse files
refactor(examples): use SimpleSpanProcessor to avoid shutdown errors
Switch from BatchSpanProcessor to SimpleSpanProcessor so spans are exported immediately. This removes the need for provider.shutdown() which could throw export errors on exit.
1 parent 4d3e751 commit 9b1c681

41 files changed

Lines changed: 82 additions & 137 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

examples/example-ai-anthropic/chat.py

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
import urllib.request
66
from opentelemetry import trace
77
from opentelemetry.sdk.trace import TracerProvider
8-
from opentelemetry.sdk.trace.export import BatchSpanProcessor
8+
from opentelemetry.sdk.trace.export import SimpleSpanProcessor
99
from opentelemetry.sdk.resources import Resource, SERVICE_NAME
1010
from opentelemetry.exporter.otlp.proto.http.trace_exporter import OTLPSpanExporter
1111
from opentelemetry.instrumentation.anthropic import AnthropicInstrumentor
@@ -16,7 +16,7 @@
1616
headers={"Authorization": f"Bearer {os.environ['POSTHOG_API_KEY']}"},
1717
)
1818
provider = TracerProvider(resource=resource)
19-
provider.add_span_processor(BatchSpanProcessor(exporter))
19+
provider.add_span_processor(SimpleSpanProcessor(exporter))
2020
trace.set_tracer_provider(provider)
2121

2222
AnthropicInstrumentor().instrument()
@@ -65,5 +65,3 @@ def get_weather(latitude: float, longitude: float, location_name: str) -> str:
6565
elif block.type == "tool_use":
6666
result = get_weather(**block.input)
6767
print(result)
68-
69-
provider.shutdown()

examples/example-ai-anthropic/extended_thinking.py

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
import os
77
from opentelemetry import trace
88
from opentelemetry.sdk.trace import TracerProvider
9-
from opentelemetry.sdk.trace.export import BatchSpanProcessor
9+
from opentelemetry.sdk.trace.export import SimpleSpanProcessor
1010
from opentelemetry.sdk.resources import Resource, SERVICE_NAME
1111
from opentelemetry.exporter.otlp.proto.http.trace_exporter import OTLPSpanExporter
1212
from opentelemetry.instrumentation.anthropic import AnthropicInstrumentor
@@ -17,7 +17,7 @@
1717
headers={"Authorization": f"Bearer {os.environ['POSTHOG_API_KEY']}"},
1818
)
1919
provider = TracerProvider(resource=resource)
20-
provider.add_span_processor(BatchSpanProcessor(exporter))
20+
provider.add_span_processor(SimpleSpanProcessor(exporter))
2121
trace.set_tracer_provider(provider)
2222

2323
AnthropicInstrumentor().instrument()
@@ -43,5 +43,3 @@
4343
print(f"Thinking: {block.thinking}\n")
4444
elif block.type == "text":
4545
print(f"Answer: {block.text}")
46-
47-
provider.shutdown()

examples/example-ai-anthropic/streaming.py

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
import os
44
from opentelemetry import trace
55
from opentelemetry.sdk.trace import TracerProvider
6-
from opentelemetry.sdk.trace.export import BatchSpanProcessor
6+
from opentelemetry.sdk.trace.export import SimpleSpanProcessor
77
from opentelemetry.sdk.resources import Resource, SERVICE_NAME
88
from opentelemetry.exporter.otlp.proto.http.trace_exporter import OTLPSpanExporter
99
from opentelemetry.instrumentation.anthropic import AnthropicInstrumentor
@@ -14,7 +14,7 @@
1414
headers={"Authorization": f"Bearer {os.environ['POSTHOG_API_KEY']}"},
1515
)
1616
provider = TracerProvider(resource=resource)
17-
provider.add_span_processor(BatchSpanProcessor(exporter))
17+
provider.add_span_processor(SimpleSpanProcessor(exporter))
1818
trace.set_tracer_provider(provider)
1919

2020
AnthropicInstrumentor().instrument()
@@ -36,4 +36,3 @@
3636
print(event.delta.text, end="", flush=True)
3737

3838
print()
39-
provider.shutdown()

examples/example-ai-autogen/agent.py

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
import asyncio
55
from opentelemetry import trace
66
from opentelemetry.sdk.trace import TracerProvider
7-
from opentelemetry.sdk.trace.export import BatchSpanProcessor
7+
from opentelemetry.sdk.trace.export import SimpleSpanProcessor
88
from opentelemetry.sdk.resources import Resource, SERVICE_NAME
99
from opentelemetry.exporter.otlp.proto.http.trace_exporter import OTLPSpanExporter
1010
from opentelemetry.instrumentation.openai_v2 import OpenAIInstrumentor
@@ -15,7 +15,7 @@
1515
headers={"Authorization": f"Bearer {os.environ['POSTHOG_API_KEY']}"},
1616
)
1717
provider = TracerProvider(resource=resource)
18-
provider.add_span_processor(BatchSpanProcessor(exporter))
18+
provider.add_span_processor(SimpleSpanProcessor(exporter))
1919
trace.set_tracer_provider(provider)
2020

2121
OpenAIInstrumentor().instrument()
@@ -41,4 +41,3 @@ async def main():
4141

4242

4343
asyncio.run(main())
44-
provider.shutdown()

examples/example-ai-aws-bedrock/chat.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
import boto3
55
from opentelemetry import trace
66
from opentelemetry.sdk.trace import TracerProvider
7-
from opentelemetry.sdk.trace.export import BatchSpanProcessor
7+
from opentelemetry.sdk.trace.export import SimpleSpanProcessor
88
from opentelemetry.sdk.resources import Resource, SERVICE_NAME
99
from opentelemetry.exporter.otlp.proto.http.trace_exporter import OTLPSpanExporter
1010
from opentelemetry.instrumentation.botocore import BotocoreInstrumentor
@@ -17,7 +17,7 @@
1717
)
1818

1919
provider = TracerProvider(resource=resource)
20-
provider.add_span_processor(BatchSpanProcessor(exporter))
20+
provider.add_span_processor(SimpleSpanProcessor(exporter))
2121
trace.set_tracer_provider(provider)
2222

2323
BotocoreInstrumentor().instrument()

examples/example-ai-azure-openai/chat.py

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
import os
44
from opentelemetry import trace
55
from opentelemetry.sdk.trace import TracerProvider
6-
from opentelemetry.sdk.trace.export import BatchSpanProcessor
6+
from opentelemetry.sdk.trace.export import SimpleSpanProcessor
77
from opentelemetry.sdk.resources import Resource, SERVICE_NAME
88
from opentelemetry.exporter.otlp.proto.http.trace_exporter import OTLPSpanExporter
99
from opentelemetry.instrumentation.openai_v2 import OpenAIInstrumentor
@@ -14,7 +14,7 @@
1414
headers={"Authorization": f"Bearer {os.environ['POSTHOG_API_KEY']}"},
1515
)
1616
provider = TracerProvider(resource=resource)
17-
provider.add_span_processor(BatchSpanProcessor(exporter))
17+
provider.add_span_processor(SimpleSpanProcessor(exporter))
1818
trace.set_tracer_provider(provider)
1919

2020
OpenAIInstrumentor().instrument()
@@ -36,4 +36,3 @@
3636
)
3737

3838
print(response.choices[0].message.content)
39-
provider.shutdown()

examples/example-ai-cerebras/chat.py

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
import os
44
from opentelemetry import trace
55
from opentelemetry.sdk.trace import TracerProvider
6-
from opentelemetry.sdk.trace.export import BatchSpanProcessor
6+
from opentelemetry.sdk.trace.export import SimpleSpanProcessor
77
from opentelemetry.sdk.resources import Resource, SERVICE_NAME
88
from opentelemetry.exporter.otlp.proto.http.trace_exporter import OTLPSpanExporter
99
from opentelemetry.instrumentation.openai_v2 import OpenAIInstrumentor
@@ -16,7 +16,7 @@
1616
)
1717

1818
provider = TracerProvider(resource=resource)
19-
provider.add_span_processor(BatchSpanProcessor(exporter))
19+
provider.add_span_processor(SimpleSpanProcessor(exporter))
2020
trace.set_tracer_provider(provider)
2121

2222
OpenAIInstrumentor().instrument()
@@ -37,4 +37,3 @@
3737
)
3838

3939
print(response.choices[0].message.content)
40-
provider.shutdown()

examples/example-ai-cohere/chat.py

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
import os
44
from opentelemetry import trace
55
from opentelemetry.sdk.trace import TracerProvider
6-
from opentelemetry.sdk.trace.export import BatchSpanProcessor
6+
from opentelemetry.sdk.trace.export import SimpleSpanProcessor
77
from opentelemetry.sdk.resources import Resource, SERVICE_NAME
88
from opentelemetry.exporter.otlp.proto.http.trace_exporter import OTLPSpanExporter
99
from opentelemetry.instrumentation.openai_v2 import OpenAIInstrumentor
@@ -16,7 +16,7 @@
1616
)
1717

1818
provider = TracerProvider(resource=resource)
19-
provider.add_span_processor(BatchSpanProcessor(exporter))
19+
provider.add_span_processor(SimpleSpanProcessor(exporter))
2020
trace.set_tracer_provider(provider)
2121

2222
OpenAIInstrumentor().instrument()
@@ -37,4 +37,3 @@
3737
)
3838

3939
print(response.choices[0].message.content)
40-
provider.shutdown()

examples/example-ai-crewai/crew.py

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
import os
44
from opentelemetry import trace
55
from opentelemetry.sdk.trace import TracerProvider
6-
from opentelemetry.sdk.trace.export import BatchSpanProcessor
6+
from opentelemetry.sdk.trace.export import SimpleSpanProcessor
77
from opentelemetry.sdk.resources import Resource, SERVICE_NAME
88
from opentelemetry.exporter.otlp.proto.http.trace_exporter import OTLPSpanExporter
99
from opentelemetry.instrumentation.crewai import CrewAIInstrumentor
@@ -14,7 +14,7 @@
1414
headers={"Authorization": f"Bearer {os.environ['POSTHOG_API_KEY']}"},
1515
)
1616
provider = TracerProvider(resource=resource)
17-
provider.add_span_processor(BatchSpanProcessor(exporter))
17+
provider.add_span_processor(SimpleSpanProcessor(exporter))
1818
trace.set_tracer_provider(provider)
1919

2020
CrewAIInstrumentor().instrument()
@@ -40,5 +40,3 @@
4040

4141
result = crew.kickoff()
4242
print(result)
43-
44-
provider.shutdown()

examples/example-ai-deepseek/chat.py

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
import os
44
from opentelemetry import trace
55
from opentelemetry.sdk.trace import TracerProvider
6-
from opentelemetry.sdk.trace.export import BatchSpanProcessor
6+
from opentelemetry.sdk.trace.export import SimpleSpanProcessor
77
from opentelemetry.sdk.resources import Resource, SERVICE_NAME
88
from opentelemetry.exporter.otlp.proto.http.trace_exporter import OTLPSpanExporter
99
from opentelemetry.instrumentation.openai_v2 import OpenAIInstrumentor
@@ -16,7 +16,7 @@
1616
)
1717

1818
provider = TracerProvider(resource=resource)
19-
provider.add_span_processor(BatchSpanProcessor(exporter))
19+
provider.add_span_processor(SimpleSpanProcessor(exporter))
2020
trace.set_tracer_provider(provider)
2121

2222
OpenAIInstrumentor().instrument()
@@ -37,4 +37,3 @@
3737
)
3838

3939
print(response.choices[0].message.content)
40-
provider.shutdown()

0 commit comments

Comments
 (0)