-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathhandler.py
More file actions
26 lines (24 loc) · 882 Bytes
/
Copy pathhandler.py
File metadata and controls
26 lines (24 loc) · 882 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
import time
import random
import requests
def retry_request(url, max_attempts=5, delay=2, backoff=2):
for attempt in range(max_attempts):
try:
response = requests.get(url)
response.raise_for_status()
return response.json()
except requests.RequestException as e:
if attempt < max_attempts - 1:
sleep_time = delay * (backoff ** attempt)
print(f"Attempt {attempt + 1} failed: {e}. Retrying in {sleep_time} seconds.")
time.sleep(sleep_time)
else:
print(f"All attempts failed. Last error: {e}")
raise
if __name__ == '__main__':
url = 'https://api.example.com/data'
try:
data = retry_request(url)
print(data)
except Exception as final_error:
print(f"Failed to retrieve data: {final_error}")