Skip to content

Commit

Permalink
rustPlatform.fetchCargoVendor: retry fetching tarballs (#357262)
Browse files Browse the repository at this point in the history
  • Loading branch information
Mic92 authored Nov 19, 2024
2 parents a4d7115 + 6356577 commit bf20efd
Showing 1 changed file with 11 additions and 1 deletion.
12 changes: 11 additions & 1 deletion pkgs/build-support/rust/fetch-cargo-vendor-util.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@
from typing import Any, TypedDict, cast

import requests
from requests.adapters import HTTPAdapter, Retry

eprint = functools.partial(print, file=sys.stderr)

Expand All @@ -21,8 +22,17 @@ def load_toml(path: Path) -> dict[str, Any]:


def download_file_with_checksum(url: str, destination_path: Path) -> str:
retries = Retry(
total=5,
backoff_factor=0.5,
status_forcelist=[500, 502, 503, 504]
)
session = requests.Session()
session.mount('http://', HTTPAdapter(max_retries=retries))
session.mount('https://', HTTPAdapter(max_retries=retries))

sha256_hash = hashlib.sha256()
with requests.get(url, stream=True) as response:
with session.get(url, stream=True) as response:
if not response.ok:
raise Exception(f"Failed to fetch file from {url}. Status code: {response.status_code}")
with open(destination_path, "wb") as file:
Expand Down

0 comments on commit bf20efd

Please sign in to comment.