@@ -168,23 +168,23 @@ class _DjangoMiddleware(MiddlewareMixin):
168
168
)
169
169
170
170
@staticmethod
171
- def _get_span_name (request ):
171
+ def _get_span_name_and_route (request ):
172
+ span_name = request .method
173
+ route = None
172
174
try :
173
175
if getattr (request , "resolver_match" ):
174
176
match = request .resolver_match
175
177
else :
176
178
match = resolve (request .path )
177
179
178
- if hasattr (match , "route" ) and match .route :
179
- return f"{ request .method } { match .route } "
180
-
181
- if hasattr (match , "url_name" ) and match .url_name :
182
- return f"{ request .method } { match .url_name } "
183
-
184
- return request .method
185
-
180
+ if route := getattr (match , "route" , None ):
181
+ span_name += f" { route } "
182
+ elif url_name := getattr (match , "url_name" , None ):
183
+ span_name += f" { url_name } "
186
184
except Resolver404 :
187
- return request .method
185
+ pass
186
+
187
+ return span_name , route
188
188
189
189
# pylint: disable=too-many-locals
190
190
def process_request (self , request ):
@@ -213,9 +213,12 @@ def process_request(self, request):
213
213
collect_request_attributes = wsgi_collect_request_attributes
214
214
215
215
attributes = collect_request_attributes (carrier )
216
+ span_name , route = self ._get_span_name_and_route (request )
217
+ if route :
218
+ attributes [SpanAttributes .HTTP_ROUTE ] = route
216
219
span , token = _start_internal_or_server_span (
217
220
tracer = self ._tracer ,
218
- span_name = self . _get_span_name ( request ) ,
221
+ span_name = span_name ,
219
222
start_time = request_meta .get (
220
223
"opentelemetry-instrumentor-django.starttime_key"
221
224
),
@@ -290,26 +293,6 @@ def process_request(self, request):
290
293
span , request
291
294
)
292
295
293
- # pylint: disable=unused-argument
294
- def process_view (self , request , view_func , * args , ** kwargs ):
295
- # Process view is executed before the view function, here we get the
296
- # route template from request.resolver_match. It is not set yet in process_request
297
- if self ._excluded_urls .url_disabled (request .build_absolute_uri ("?" )):
298
- return
299
-
300
- if (
301
- self ._environ_activation_key in request .META .keys ()
302
- and self ._environ_span_key in request .META .keys ()
303
- ):
304
- span = request .META [self ._environ_span_key ]
305
-
306
- if span .is_recording ():
307
- match = getattr (request , "resolver_match" , None )
308
- if match :
309
- route = getattr (match , "route" , None )
310
- if route :
311
- span .set_attribute (SpanAttributes .HTTP_ROUTE , route )
312
-
313
296
def process_exception (self , request , exception ):
314
297
if self ._excluded_urls .url_disabled (request .build_absolute_uri ("?" )):
315
298
return
0 commit comments