in alibabacloud_oss_v2/downloader.py [0:0]
def download(self) -> DownloadResult:
"""Breakpoint download
"""
parallel = self._options.parallel_num > 1
seekable = utils.is_seekable(self._writer)
if not seekable:
parallel = False
if self._epos - self._pos <= self._options.part_size:
parallel = False
if parallel:
with concurrent.futures.ThreadPoolExecutor(self._options.parallel_num) as executor:
for result in executor.map(self._process_part, self._iter_part_start()):
self._update_process_result(result)
else:
if seekable:
self._writer.seek(self._pos - self._rstart, os.SEEK_SET)
for start in self._iter_part_start():
self._update_process_result(self._process_part(start))
if len(self._download_errors) > 0:
break
if len(self._download_errors) > 0:
raise self._wrap_error(self._download_errors[-1])
self._assert_crc_same()
return DownloadResult(written=self._written)