def download()

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)