20
20
from pyramid .tweens import EXCVIEW
21
21
22
22
import opentelemetry .instrumentation .wsgi as otel_wsgi
23
- from opentelemetry import context
23
+ from opentelemetry import context , trace
24
24
from opentelemetry .instrumentation .propagators import (
25
25
get_global_response_propagator ,
26
26
)
27
27
from opentelemetry .instrumentation .pyramid .version import __version__
28
28
from opentelemetry .propagate import extract
29
29
from opentelemetry .semconv .trace import SpanAttributes
30
- from opentelemetry .trace import (
31
- INVALID_SPAN ,
32
- SpanKind ,
33
- get_current_span ,
34
- get_tracer ,
35
- use_span ,
36
- )
37
30
from opentelemetry .util ._time import _time_ns
38
31
from opentelemetry .util .http import get_excluded_urls
39
32
@@ -89,24 +82,19 @@ def _before_traversal(event):
89
82
90
83
start_time = request_environ .get (_ENVIRON_STARTTIME_KEY )
91
84
92
- token = context = None
93
- span_kind = SpanKind .INTERNAL
94
- tracer = get_tracer (__name__ , __version__ )
85
+ token = context .attach (
86
+ extract (request_environ , getter = otel_wsgi .wsgi_getter )
87
+ )
88
+ tracer = trace .get_tracer (__name__ , __version__ )
95
89
96
90
if request .matched_route :
97
91
span_name = request .matched_route .pattern
98
92
else :
99
93
span_name = otel_wsgi .get_default_span_name (request_environ )
100
94
101
- if get_current_span () is INVALID_SPAN :
102
- context = extract (request_environ , getter = otel_wsgi .wsgi_getter )
103
- token = context .attach (context )
104
- span_kind = SpanKind .SERVER
105
-
106
95
span = tracer .start_span (
107
96
span_name ,
108
- context ,
109
- kind = span_kind ,
97
+ kind = trace .SpanKind .SERVER ,
110
98
start_time = start_time ,
111
99
)
112
100
@@ -119,12 +107,11 @@ def _before_traversal(event):
119
107
for key , value in attributes .items ():
120
108
span .set_attribute (key , value )
121
109
122
- activation = use_span (span , end_on_exit = True )
110
+ activation = trace . use_span (span , end_on_exit = True )
123
111
activation .__enter__ () # pylint: disable=E1101
124
112
request_environ [_ENVIRON_ACTIVATION_KEY ] = activation
125
113
request_environ [_ENVIRON_SPAN_KEY ] = span
126
- if token :
127
- request_environ [_ENVIRON_TOKEN ] = token
114
+ request_environ [_ENVIRON_TOKEN ] = token
128
115
129
116
130
117
def trace_tween_factory (handler , registry ):
@@ -193,8 +180,7 @@ def trace_tween(request):
193
180
else :
194
181
activation .__exit__ (None , None , None )
195
182
196
- if request .environ .get (_ENVIRON_TOKEN , None ) is not None :
197
- context .detach (request .environ .get (_ENVIRON_TOKEN ))
183
+ context .detach (request .environ .get (_ENVIRON_TOKEN ))
198
184
199
185
return response
200
186
0 commit comments