3 个版本
0.1.2 | 2024年4月25日 |
---|---|
0.1.1 | 2024年4月25日 |
0.1.0 | 2024年4月23日 |
#753 in 网络编程
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