Skip to content
Snippets Groups Projects
Commit 0cd4cf9d authored by yvesn's avatar yvesn
Browse files

SSDM-6731: pybis - marking task as done when failing to download file so the...

SSDM-6731: pybis - marking task as done when failing to download file so the process does not get stuck
parent eae66f4d
No related branches found
No related tags found
No related merge requests found
...@@ -507,25 +507,25 @@ class DataSetDownloadQueue(): ...@@ -507,25 +507,25 @@ class DataSetDownloadQueue():
def download_file(self): def download_file(self):
while True: while True:
url, filename, filename_dest, file_size, verify_certificates, write_mode = self.download_queue.get() try:
# create the necessary directory structure if they don't exist yet url, filename, filename_dest, file_size, verify_certificates, write_mode = self.download_queue.get()
os.makedirs(os.path.dirname(filename_dest), exist_ok=True) # create the necessary directory structure if they don't exist yet
os.makedirs(os.path.dirname(filename_dest), exist_ok=True)
# request the file in streaming mode
r = requests.get(url, stream=True, verify=verify_certificates) # request the file in streaming mode
if r.ok == False: r = requests.get(url, stream=True, verify=verify_certificates)
if r.ok == False:
raise ValueError("Could not download from {}: HTTP {}. Reason: {}".format(url, r.status_code, r.reason))
with open(filename_dest, write_mode) as f:
for chunk in r.iter_content(chunk_size=1024):
if chunk: # filter out keep-alive new chunks
f.write(chunk)
if os.path.getsize(filename_dest) != int(file_size):
if self.collect_files_with_wrong_length:
self.files_with_wrong_length.append(filename)
else:
raise ValueError("File has the wrong length: {}".format(filename_dest))
finally:
self.download_queue.task_done() self.download_queue.task_done()
raise ValueError("Could not download from {}: HTTP {}. Reason: {}".format(url, r.status_code, r.reason))
with open(filename_dest, write_mode) as f:
for chunk in r.iter_content(chunk_size=1024):
if chunk: # filter out keep-alive new chunks
f.write(chunk)
if os.path.getsize(filename_dest) != int(file_size):
if self.collect_files_with_wrong_length:
self.files_with_wrong_length.append(filename)
else:
self.download_queue.task_done()
raise ValueError("File has the wrong length: {}".format(filename_dest))
self.download_queue.task_done()
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment