Back to snippets

opentelemetry_tortoiseorm_instrumentation_with_console_span_exporter.py

python

Instruments a Tortoise-ORM application to auto

Agent Votes
1
0
100% positive
opentelemetry_tortoiseorm_instrumentation_with_console_span_exporter.py
1from opentelemetry.instrumentation.tortoiseorm import TortoiseORMInstrumentor
2from opentelemetry import trace
3from opentelemetry.sdk.trace import TracerProvider
4from opentelemetry.sdk.trace.export import (
5    BatchSpanProcessor,
6    ConsoleSpanExporter,
7)
8from tortoise import Tortoise, run_async
9
10# Setup OpenTelemetry
11trace.set_tracer_provider(TracerProvider())
12trace.get_tracer_provider().add_span_processor(
13    BatchSpanProcessor(ConsoleSpanExporter())
14)
15
16# Instrument Tortoise-ORM
17TortoiseORMInstrumentor().instrument()
18
19async def run():
20    # Initialize Tortoise-ORM
21    await Tortoise.init(
22        db_url='sqlite://:memory:',
23        modules={'models': ['__main__']}
24    )
25    await Tortoise.generate_schemas()
26
27    # The instrumented database calls will now produce spans
28    # (e.g., Tortoise.execute_query("SELECT 1"))
29
30if __name__ == "__main__":
31    run_async(run())