#download #parallel #resume #cache

pget

用于解决大文件下载过程中遇到的网络不稳定问题,支持可续传下载和并发下载

3 个版本

0.1.2 2024年4月25日
0.1.1 2024年4月25日
0.1.0 2024年4月23日

#753 in 网络编程

MIT 许可证

34KB
759

pget

并行下载文件并在中断后继续下载

用于解决大文件下载过程中遇到的网络不稳定问题,支持可续传下载和并发下载。

pget 将创建一个 .cache 目录来存储下载缓存,下载缓存有助于续传下载,您可以选择是否保留缓存。

使用方法

添加依赖

cargo add pget  # --features progress_bar

progress_bar 功能将使用默认进度条,如果您不启用此功能,终端中不会显示任何进度条。

使用包

  • 普通下载
use std::path::PathBuf;
let p = PathBuf::from("test");
let p = p.join("tokenizer.model");
pget::download(
    "https://hf-mirror.com/NexaAIDev/Octopus-v2/resolve/main/tokenizer.model".to_string(),
    num_cpus::get(),
    p.clone(),
).unwrap();
  • 清理缓存后下载
use std::path::PathBuf;
 let p = PathBuf::from("test");
 let p = p.join("merges.txt");
 pget::download_with_cleaner(
 "https://hf-mirror.com/Qwen/Qwen1.5-MoE-A2.7B/raw/main/merges.txt".to_string(),
 num_cpus::get(),
 p.clone(),
 false //keep the cache or not
).unwrap();
  • 使用自定义进度条下载
use std::path::PathBuf;
use indicatif::ProgressBar;
use indicatif::ProgressStyle;
let progress = ProgressBar::new(0);
progress.set_style(
 ProgressStyle::with_template(
    "{msg} [{elapsed_precise}] [{wide_bar}] {bytes}/{total_bytes} {bytes_per_sec} ({eta})",
                ).unwrap(),
            );
 progress.set_message("tokenizer");
 let url =
 "https://hf-mirror.com/Qwen/Qwen1.5-MoE-A2.7B/raw/main/tokenizer.json".to_string();
 let p = PathBuf::from("test");
 let p = p.join("qwen.safetensors");
 pget::download_with_custom_progress(url, 4, p.clone(), Some(progress),false).unwrap();

依赖

~8–20MB
~280K SLoC