Skip to content

Commit b74d40b

Browse files
chore(pyreqwest): Remove transaction-based tracing (#7309)
Closes #7106
1 parent f785bb6 commit b74d40b

2 files changed

Lines changed: 278 additions & 650 deletions

File tree

sentry_sdk/integrations/pyreqwest.py

Lines changed: 22 additions & 69 deletions
Original file line numberDiff line numberDiff line change
@@ -2,24 +2,17 @@
22
from typing import Any, Generator
33

44
import sentry_sdk
5-
from sentry_sdk import start_span
65
from sentry_sdk.consts import OP, SPANDATA
76
from sentry_sdk.integrations import DidNotEnable, Integration, _check_minimum_version
87
from sentry_sdk.scope import should_send_default_pii
9-
from sentry_sdk.traces import StreamedSpan
10-
from sentry_sdk.tracing import BAGGAGE_HEADER_NAME
118
from sentry_sdk.tracing_utils import (
129
add_http_breadcrumb,
1310
add_http_request_source,
14-
add_sentry_baggage_to_headers,
15-
has_span_streaming_enabled,
1611
propagate_trace_headers,
17-
should_propagate_trace,
1812
)
1913
from sentry_sdk.utils import (
2014
SENSITIVE_DATA_SUBSTITUTE,
2115
capture_internal_exceptions,
22-
logger,
2316
parse_url,
2417
parse_version,
2518
)
@@ -99,67 +92,31 @@ def _sentry_pyreqwest_span(request: "Request") -> "Generator[Any, None, None]":
9992
with capture_internal_exceptions():
10093
parsed_url = parse_url(str(request.url), sanitize=False)
10194

102-
span_streaming = has_span_streaming_enabled(sentry_sdk.get_client().options)
103-
if span_streaming:
104-
if sentry_sdk.traces.get_current_span() is None:
105-
propagate_trace_headers(client=sentry_sdk.get_client(), request=request)
106-
yield None
107-
return
108-
109-
with sentry_sdk.traces.start_span(
110-
name=f"{request.method} {parsed_url.url if parsed_url else SENSITIVE_DATA_SUBSTITUTE}",
111-
attributes={
112-
"sentry.op": OP.HTTP_CLIENT,
113-
"sentry.origin": PyreqwestIntegration.origin,
114-
SPANDATA.HTTP_REQUEST_METHOD: request.method,
115-
},
116-
) as span:
117-
if parsed_url is not None and should_send_default_pii():
118-
span.set_attribute(SPANDATA.URL_FULL, parsed_url.url)
119-
span.set_attribute(SPANDATA.URL_QUERY, parsed_url.query)
120-
span.set_attribute(SPANDATA.URL_FRAGMENT, parsed_url.fragment)
121-
122-
propagate_trace_headers(client=sentry_sdk.get_client(), request=request)
123-
124-
yield span
125-
126-
if span is not None:
127-
with capture_internal_exceptions():
128-
add_http_request_source(span)
129-
130-
return
131-
132-
with start_span(
133-
op=OP.HTTP_CLIENT,
95+
if sentry_sdk.traces.get_current_span() is None:
96+
propagate_trace_headers(client=sentry_sdk.get_client(), request=request)
97+
yield None
98+
return
99+
100+
with sentry_sdk.traces.start_span(
134101
name=f"{request.method} {parsed_url.url if parsed_url else SENSITIVE_DATA_SUBSTITUTE}",
135-
origin=PyreqwestIntegration.origin,
102+
attributes={
103+
"sentry.op": OP.HTTP_CLIENT,
104+
"sentry.origin": PyreqwestIntegration.origin,
105+
SPANDATA.HTTP_REQUEST_METHOD: request.method,
106+
},
136107
) as span:
137-
span.set_data(SPANDATA.HTTP_METHOD, request.method)
138-
if parsed_url is not None:
139-
span.set_data("url", parsed_url.url)
140-
span.set_data(SPANDATA.HTTP_QUERY, parsed_url.query)
141-
span.set_data(SPANDATA.HTTP_FRAGMENT, parsed_url.fragment)
142-
143-
if should_propagate_trace(sentry_sdk.get_client(), str(request.url)):
144-
for (
145-
key,
146-
value,
147-
) in sentry_sdk.get_current_scope().iter_trace_propagation_headers():
148-
logger.debug(
149-
"[Tracing] Adding `{key}` header {value} to outgoing request to {url}.".format(
150-
key=key, value=value, url=request.url
151-
)
152-
)
153-
154-
if key == BAGGAGE_HEADER_NAME:
155-
add_sentry_baggage_to_headers(request.headers, value)
156-
else:
157-
request.headers[key] = value
108+
if parsed_url is not None and should_send_default_pii():
109+
span.set_attribute(SPANDATA.URL_FULL, parsed_url.url)
110+
span.set_attribute(SPANDATA.URL_QUERY, parsed_url.query)
111+
span.set_attribute(SPANDATA.URL_FRAGMENT, parsed_url.fragment)
112+
113+
propagate_trace_headers(client=sentry_sdk.get_client(), request=request)
158114

159115
yield span
160116

161-
with capture_internal_exceptions():
162-
add_http_request_source(span)
117+
if span is not None:
118+
with capture_internal_exceptions():
119+
add_http_request_source(span)
163120

164121

165122
async def sentry_async_middleware(
@@ -179,14 +136,12 @@ async def sentry_async_middleware(
179136
response = None
180137
with _sentry_pyreqwest_span(request) as span:
181138
response = await next_handler.run(request)
182-
if isinstance(span, StreamedSpan):
139+
if span is not None:
183140
span.status = "error" if response.status >= 400 else "ok"
184141
span.set_attribute(
185142
SPANDATA.HTTP_STATUS_CODE,
186143
response.status,
187144
)
188-
elif span is not None:
189-
span.set_http_status(response.status)
190145

191146
if response is not None:
192147
breadcrumb_data = {
@@ -224,14 +179,12 @@ def sentry_sync_middleware(
224179
response = None
225180
with _sentry_pyreqwest_span(request) as span:
226181
response = next_handler.run(request)
227-
if isinstance(span, StreamedSpan):
182+
if span is not None:
228183
span.status = "error" if response.status >= 400 else "ok"
229184
span.set_attribute(
230185
SPANDATA.HTTP_STATUS_CODE,
231186
response.status,
232187
)
233-
elif span is not None:
234-
span.set_http_status(response.status)
235188

236189
if response is not None:
237190
breadcrumb_data = {

0 commit comments

Comments
 (0)