mirror of
https://github.com/open-telemetry/opentelemetry-python-contrib.git
synced 2025-07-31 22:23:12 +08:00
Using _start_internal_or_server_span function in asgi interceptor (#898)
This commit is contained in:
@ -107,16 +107,13 @@ from opentelemetry.instrumentation.asgi.version import __version__ # noqa
|
|||||||
from opentelemetry.instrumentation.propagators import (
|
from opentelemetry.instrumentation.propagators import (
|
||||||
get_global_response_propagator,
|
get_global_response_propagator,
|
||||||
)
|
)
|
||||||
from opentelemetry.instrumentation.utils import http_status_to_status_code
|
from opentelemetry.instrumentation.utils import (
|
||||||
from opentelemetry.propagate import extract
|
_start_internal_or_server_span,
|
||||||
|
http_status_to_status_code,
|
||||||
|
)
|
||||||
from opentelemetry.propagators.textmap import Getter, Setter
|
from opentelemetry.propagators.textmap import Getter, Setter
|
||||||
from opentelemetry.semconv.trace import SpanAttributes
|
from opentelemetry.semconv.trace import SpanAttributes
|
||||||
from opentelemetry.trace import (
|
from opentelemetry.trace import Span, set_span_in_context
|
||||||
INVALID_SPAN,
|
|
||||||
Span,
|
|
||||||
SpanKind,
|
|
||||||
set_span_in_context,
|
|
||||||
)
|
|
||||||
from opentelemetry.trace.status import Status, StatusCode
|
from opentelemetry.trace.status import Status, StatusCode
|
||||||
from opentelemetry.util.http import remove_url_credentials
|
from opentelemetry.util.http import remove_url_credentials
|
||||||
|
|
||||||
@ -327,24 +324,18 @@ class OpenTelemetryMiddleware:
|
|||||||
if self.excluded_urls and self.excluded_urls.url_disabled(url):
|
if self.excluded_urls and self.excluded_urls.url_disabled(url):
|
||||||
return await self.app(scope, receive, send)
|
return await self.app(scope, receive, send)
|
||||||
|
|
||||||
token = ctx = span_kind = None
|
|
||||||
|
|
||||||
if trace.get_current_span() is INVALID_SPAN:
|
|
||||||
ctx = extract(scope, getter=asgi_getter)
|
|
||||||
token = context.attach(ctx)
|
|
||||||
span_kind = SpanKind.SERVER
|
|
||||||
else:
|
|
||||||
ctx = context.get_current()
|
|
||||||
span_kind = SpanKind.INTERNAL
|
|
||||||
|
|
||||||
span_name, additional_attributes = self.default_span_details(scope)
|
span_name, additional_attributes = self.default_span_details(scope)
|
||||||
|
|
||||||
|
span, token = _start_internal_or_server_span(
|
||||||
|
tracer=self.tracer,
|
||||||
|
span_name=span_name,
|
||||||
|
start_time=None,
|
||||||
|
context_carrier=scope,
|
||||||
|
context_getter=asgi_getter,
|
||||||
|
)
|
||||||
|
|
||||||
try:
|
try:
|
||||||
with self.tracer.start_as_current_span(
|
with trace.use_span(span, end_on_exit=True) as current_span:
|
||||||
span_name,
|
|
||||||
context=ctx,
|
|
||||||
kind=span_kind,
|
|
||||||
) as current_span:
|
|
||||||
if current_span.is_recording():
|
if current_span.is_recording():
|
||||||
attributes = collect_request_attributes(scope)
|
attributes = collect_request_attributes(scope)
|
||||||
attributes.update(additional_attributes)
|
attributes.update(additional_attributes)
|
||||||
|
Reference in New Issue
Block a user