gh-134262: Catch both URLError and ConnectionError in retries (#135365)
This commit is contained in:
@@ -5,8 +5,9 @@ import os
|
||||
import pathlib
|
||||
import sys
|
||||
import time
|
||||
import urllib.error
|
||||
import urllib.request
|
||||
import zipfile
|
||||
from urllib.request import urlretrieve
|
||||
|
||||
|
||||
def retrieve_with_retries(download_location, output_path, reporthook,
|
||||
@@ -14,12 +15,12 @@ def retrieve_with_retries(download_location, output_path, reporthook,
|
||||
"""Download a file with exponential backoff retry and save to disk."""
|
||||
for attempt in range(max_retries + 1):
|
||||
try:
|
||||
resp = urlretrieve(
|
||||
resp = urllib.request.urlretrieve(
|
||||
download_location,
|
||||
output_path,
|
||||
reporthook=reporthook,
|
||||
)
|
||||
except ConnectionError as ex:
|
||||
except (urllib.error.URLError, ConnectionError) as ex:
|
||||
if attempt == max_retries:
|
||||
msg = f"Download from {download_location} failed."
|
||||
raise OSError(msg) from ex
|
||||
|
||||
@@ -172,7 +172,7 @@ def download_with_retries(download_location: str,
|
||||
for attempt in range(max_retries + 1):
|
||||
try:
|
||||
resp = urllib.request.urlopen(download_location)
|
||||
except urllib.error.URLError as ex:
|
||||
except (urllib.error.URLError, ConnectionError) as ex:
|
||||
if attempt == max_retries:
|
||||
msg = f"Download from {download_location} failed."
|
||||
raise OSError(msg) from ex
|
||||
|
||||
Reference in New Issue
Block a user