21
21
from opentelemetry .instrumentation .utils import http_status_to_status_code
22
22
from opentelemetry .propagate import inject
23
23
from opentelemetry .semconv .trace import SpanAttributes
24
- from opentelemetry .trace .status import Status
24
+ from opentelemetry .trace .status import Status , StatusCode
25
25
from opentelemetry .util .http import remove_url_credentials
26
26
27
27
@@ -107,6 +107,7 @@ def _finish_tracing_callback(
107
107
):
108
108
response = None
109
109
status_code = None
110
+ status = None
110
111
description = None
111
112
112
113
exc = future .exception ()
@@ -115,18 +116,26 @@ def _finish_tracing_callback(
115
116
if isinstance (exc , HTTPError ):
116
117
response = exc .response
117
118
status_code = response .code
119
+ status = Status (
120
+ status_code = http_status_to_status_code (status_code ),
121
+ description = description ,
122
+ )
123
+ else :
124
+ status = Status (
125
+ status_code = StatusCode .ERROR ,
126
+ description = description ,
127
+ )
118
128
else :
119
129
response = future .result ()
120
130
status_code = response .code
131
+ status = Status (
132
+ status_code = http_status_to_status_code (status_code ),
133
+ description = description ,
134
+ )
121
135
122
136
if status_code is not None :
123
137
span .set_attribute (SpanAttributes .HTTP_STATUS_CODE , status_code )
124
- span .set_status (
125
- Status (
126
- status_code = http_status_to_status_code (status_code ),
127
- description = description ,
128
- )
129
- )
138
+ span .set_status (status )
130
139
131
140
if response is not None :
132
141
metric_attributes = _create_metric_attributes (response )
0 commit comments