Skip to content

Commit 2c102d2

Browse files
committed
Retry connections if proxy error occurs
1 parent b623f64 commit 2c102d2

1 file changed

Lines changed: 38 additions & 23 deletions

File tree

runner/main.py

Lines changed: 38 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -47,29 +47,44 @@ def submit_image(result: TestResult, hardware: str, timestamp: str, file: str,
4747
Submits a new candidate image to the provided URL. This function logs a method
4848
indicating whether the image submission succeeded
4949
"""
50-
f = open(file, "rb")
51-
res = requests.post(
52-
url,
53-
data = {
54-
"group": result.group,
55-
"name": result.name,
56-
"hardware": hardware,
57-
"runnerID": runner,
58-
"timestamp": timestamp,
59-
"timing": result.timing,
60-
"commitHash": result.commit
61-
},
62-
files = {
63-
"file": f,
64-
"log": result.error
65-
}
66-
)
67-
if res.status_code != 200:
68-
print(f"Image submission failed with error {res.status_code}")
69-
print(res.text)
70-
else:
71-
print("Image submitted successfully")
72-
f.close()
50+
nRetries = 10
51+
for attempt in range(1, nRetries + 1):
52+
try:
53+
with open(file, "rb") as f:
54+
res = requests.post(
55+
url,
56+
timeout=30,
57+
data = {
58+
"group": result.group,
59+
"name": result.name,
60+
"hardware": hardware,
61+
"runnerID": runner,
62+
"timestamp": timestamp,
63+
"timing": result.timing,
64+
"commitHash": result.commit
65+
},
66+
files = {
67+
"file": f,
68+
"log": result.error
69+
}
70+
)
71+
if res.status_code == 200:
72+
print("Image submitted successfully")
73+
return
74+
elif res.status_code in (502, 503, 504):
75+
print(f"Image submission attempt {attempt}/{nRetries} failed with error {res.status_code}, retrying...")
76+
else:
77+
print(f"Image submission failed with error {res.status_code}")
78+
print(res.text)
79+
return
80+
except requests.exceptions.Timeout:
81+
print(f"Image submission attempt {attempt}/{retries} timed out, retrying...")
82+
except requests.exceptions.RequestException as e:
83+
print(f"Image submission attempt {attempt}/{retries} failed with error: {e}")
84+
return
85+
if attempt < retries:
86+
time.sleep(5)
87+
print(f"Image submission failed after {retries} attempts")
7388

7489

7590

0 commit comments

Comments
 (0)