@@ -62,9 +62,20 @@ def send(self: "Client", request: "Request", **kwargs: "Any") -> "Response":
6262
6363 span_ctx : "Optional[Union[Span, StreamedSpan]]" = None
6464 if span_streaming :
65+ attributes = {
66+ "sentry.op" : OP .HTTP_CLIENT ,
67+ "sentry.origin" : HttpxIntegration .origin ,
68+ SPANDATA .HTTP_METHOD : request .method ,
69+ }
70+ if parsed_url is not None :
71+ attributes ["url" ] = parsed_url .url
72+ attributes [SPANDATA .HTTP_QUERY ] = parsed_url .query
73+ attributes [SPANDATA .HTTP_FRAGMENT ] = parsed_url .fragment
6574 span_ctx = sentry_sdk .traces .start_span (
66- name = f"{ request .method } { parsed_url .url if parsed_url else SENSITIVE_DATA_SUBSTITUTE } "
75+ name = f"{ request .method } { parsed_url .url if parsed_url else SENSITIVE_DATA_SUBSTITUTE } " ,
76+ attributes = attributes ,
6777 )
78+
6879 else :
6980 span_ctx = start_span (
7081 op = OP .HTTP_CLIENT ,
@@ -77,16 +88,7 @@ def send(self: "Client", request: "Request", **kwargs: "Any") -> "Response":
7788 )
7889
7990 with span_ctx as span :
80- if isinstance (span , StreamedSpan ):
81- span .set_attribute ("sentry.op" , OP .HTTP_CLIENT )
82- span .set_attribute ("sentry.origin" , HttpxIntegration .origin )
83-
84- span .set_attribute (SPANDATA .HTTP_METHOD , request .method )
85- if parsed_url is not None :
86- span .set_attribute ("url" , parsed_url .url )
87- span .set_attribute (SPANDATA .HTTP_QUERY , parsed_url .query )
88- span .set_attribute (SPANDATA .HTTP_FRAGMENT , parsed_url .fragment )
89- else :
91+ if not isinstance (span , StreamedSpan ):
9092 span .set_data (SPANDATA .HTTP_METHOD , request .method )
9193 if parsed_url is not None :
9294 span .set_data ("url" , parsed_url .url )
@@ -111,10 +113,11 @@ def send(self: "Client", request: "Request", **kwargs: "Any") -> "Response":
111113
112114 rv = real_send (self , request , ** kwargs )
113115
114- span .set_http_status (rv .status_code )
115116 if isinstance (span , StreamedSpan ):
117+ span .status = "error" if rv .status_code >= 400 else "ok"
116118 span .set_attribute ("reason" , rv .reason_phrase )
117119 else :
120+ span .set_http_status (rv .status_code )
118121 span .set_data ("reason" , rv .reason_phrase )
119122
120123 with capture_internal_exceptions ():
@@ -143,8 +146,19 @@ async def send(
143146
144147 span_ctx : "Optional[Union[Span, StreamedSpan]]" = None
145148 if span_streaming :
149+ attributes = {
150+ "sentry.op" : OP .HTTP_CLIENT ,
151+ "sentry.origin" : HttpxIntegration .origin ,
152+ SPANDATA .HTTP_METHOD : request .method ,
153+ }
154+ if parsed_url is not None :
155+ attributes ["url" ] = parsed_url .url
156+ attributes [SPANDATA .HTTP_QUERY ] = parsed_url .query
157+ attributes [SPANDATA .HTTP_FRAGMENT ] = parsed_url .fragment
158+
146159 span_ctx = sentry_sdk .traces .start_span (
147- name = f"{ request .method } { parsed_url .url if parsed_url else SENSITIVE_DATA_SUBSTITUTE } "
160+ name = f"{ request .method } { parsed_url .url if parsed_url else SENSITIVE_DATA_SUBSTITUTE } " ,
161+ attributes = attributes ,
148162 )
149163 else :
150164 span_ctx = start_span (
@@ -158,15 +172,7 @@ async def send(
158172 )
159173
160174 with span_ctx as span :
161- if isinstance (span , StreamedSpan ):
162- span .set_attribute ("sentry.op" , OP .HTTP_CLIENT )
163- span .set_attribute ("sentry.origin" , HttpxIntegration .origin )
164- span .set_attribute (SPANDATA .HTTP_METHOD , request .method )
165- if parsed_url is not None :
166- span .set_attribute ("url" , parsed_url .url )
167- span .set_attribute (SPANDATA .HTTP_QUERY , parsed_url .query )
168- span .set_attribute (SPANDATA .HTTP_FRAGMENT , parsed_url .fragment )
169- else :
175+ if not isinstance (span , StreamedSpan ):
170176 span .set_data (SPANDATA .HTTP_METHOD , request .method )
171177 if parsed_url is not None :
172178 span .set_data ("url" , parsed_url .url )
@@ -190,10 +196,11 @@ async def send(
190196
191197 rv = await real_send (self , request , ** kwargs )
192198
193- span .set_http_status (rv .status_code )
194199 if isinstance (span , StreamedSpan ):
200+ span .status = "error" if rv .status_code >= 400 else "ok"
195201 span .set_attribute ("reason" , rv .reason_phrase )
196202 else :
203+ span .set_http_status (rv .status_code )
197204 span .set_data ("reason" , rv .reason_phrase )
198205
199206 with capture_internal_exceptions ():
0 commit comments