Skip to content

Commit e6ea103

Browse files
committed
Only add a retry-attempt header on a retry
1 parent 1edfb90 commit e6ea103

File tree

2 files changed

+25
-25
lines changed

2 files changed

+25
-25
lines changed

msgraph/core/middleware/retry.py

Lines changed: 21 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -112,30 +112,28 @@ def send(self, request, **kwargs):
112112
retry_valid = True
113113

114114
while retry_valid:
115-
try:
116-
start_time = time.time()
115+
start_time = time.time()
116+
if retry_count > 0:
117117
request.headers.update({'retry-attempt': '{}'.format(retry_count)})
118-
response = super().send(request, **kwargs)
119-
# Check if the request needs to be retried based on the response method
120-
# and status code
121-
if self.should_retry(retry_options, response):
122-
# check that max retries has not been hit
123-
retry_valid = self.check_retry_valid(retry_options, retry_count)
124-
125-
# Get the delay time between retries
126-
delay = self.get_delay_time(retry_options, retry_count, response)
127-
128-
if retry_valid and delay < absolute_time_limit:
129-
time.sleep(delay)
130-
end_time = time.time()
131-
absolute_time_limit -= (end_time - start_time)
132-
# increment the count for retries
133-
retry_count += 1
134-
135-
continue
136-
break
137-
except Exception as error:
138-
raise error
118+
response = super().send(request, **kwargs)
119+
# Check if the request needs to be retried based on the response method
120+
# and status code
121+
if self.should_retry(retry_options, response):
122+
# check that max retries has not been hit
123+
retry_valid = self.check_retry_valid(retry_options, retry_count)
124+
125+
# Get the delay time between retries
126+
delay = self.get_delay_time(retry_options, retry_count, response)
127+
128+
if retry_valid and delay < absolute_time_limit:
129+
time.sleep(delay)
130+
end_time = time.time()
131+
absolute_time_limit -= (end_time - start_time)
132+
# increment the count for retries
133+
retry_count += 1
134+
135+
continue
136+
break
139137
return response
140138

141139
def should_retry(self, retry_options, response):

tests/integration/test_retry_middleware.py

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,8 @@ def test_no_retry_success_response(graph_client):
2525
)
2626

2727
assert response.status_code == 200
28-
assert response.request.headers["retry-attempt"] == "0"
28+
with pytest.raises(KeyError):
29+
response.request.headers["retry-attempt"]
2930

3031

3132
def test_valid_retry_429(graph_client):
@@ -88,4 +89,5 @@ def test_retries_time_limit(graph_client):
8889

8990
assert response.status_code == 503
9091
headers = response.request.headers
91-
assert headers["retry-attempt"] == "0"
92+
with pytest.raises(KeyError):
93+
response.request.headers["retry-attempt"]

0 commit comments

Comments
 (0)