-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathtracing.py
More file actions
32 lines (25 loc) · 957 Bytes
/
tracing.py
File metadata and controls
32 lines (25 loc) · 957 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
import opentelemetry
import opentelemetry.propagate
from opentelemetry.context import Context
def current_opentelemetry_tracecontext_to_carrier() -> dict[str, str]:
"""
Converts the current trace+span in Python
to its serialized 'TextMap" carrier format
"""
carrier: dict[str, str] = {}
otel_propagator().inject(carrier)
return carrier
def carrier_to_opentelemetry_tracecontext(carrier: dict[str, str]) -> Context:
"""
Converts a serialized "TextMap" carrier
back into a span-context in Python.
This can then be passed as 'parent context'
when creating a new span.
"""
return otel_propagator().extract(carrier)
def otel_propagator() -> opentelemetry.propagators.textmap.TextMapPropagator:
"""
We use the default propagate which is configurable using an env var.
Opsqueue supports the W3C trace context and W3C baggage
"""
return opentelemetry.propagate.get_global_textmap()