in variance-analysis/mach_perftest_notebook_dev/perftestnotebook/artifact_downloader.py [0:0]
def download_artifact(task_id, artifact, output_dir):
global FAILED
fname = os.path.join(output_dir, task_id + "_" + os.path.basename(artifact["name"]))
log("Downloading " + artifact["name"] + " to: " + fname)
if os.path.exists(fname):
log("File already exists.")
return fname
tries = 0
url_data = (
"https://queue.taskcluster.net/v1/task/"
+ task_id
+ "/artifacts/"
+ artifact["name"]
)
while tries < RETRY:
try:
# Make the actual request
request = requests.get(url_data, timeout=60, stream=True)
# Open the output file and make sure we write in binary mode
with open(fname, "wb") as fh:
# Walk through the request response in chunks of 1024 * 1024 bytes, so 1MiB
for chunk in request.iter_content(1024 * 1024):
# Write the chunk to the file
fh.write(chunk)
break
except Exception as e:
log(
"Failed to get data from %s: %s - %s"
% (url_data, e.__class__.__name__, e)
)
if tries < RETRY:
tries += 1
log("Retrying %s more times..." % str(RETRY - tries))
else:
warning("No more retries. Failed to download %s" % url)
FAILED.append(task_id)
raise
# urlretrieve(
# 'https://queue.taskcluster.net/v1/task/' + task_id + '/artifacts/' + artifact['name'],
# fname
# )
return fname