22from typing import Any , Generator
33
44import sentry_sdk
5- from sentry_sdk import start_span
65from sentry_sdk .consts import OP , SPANDATA
76from sentry_sdk .integrations import DidNotEnable , Integration , _check_minimum_version
87from sentry_sdk .scope import should_send_default_pii
9- from sentry_sdk .traces import StreamedSpan
10- from sentry_sdk .tracing import BAGGAGE_HEADER_NAME
118from 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)
1913from 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
165122async 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