使用旧 Rust 2015
0.2.0 |
|
---|---|
0.1.0 |
|
#11 in #get
25 次每月下载
用于 rustget
22KB
400 代码行
parallel-getter
从网络服务器通过 GET 请求获取文件时,可以定义每次请求接收的字节范围。这允许在相同的 URL 上使用多个 GET 请求来增加该文件的传输吞吐量。一旦获取了部分,它们将被连接成一个单独的文件。
因此,这个crate将使得设置并行 GET 请求变得非常简单,它提供了一个可配置的线程数和一个可选的回调,以监控传输进度。
特性
- 使用并行 GET 请求下载文件以最大化带宽使用。
- 指定镜像以将请求分散到不同的服务器。
- 控制用于获取请求的线程数。
- 定义存储部分到内存中的最小阈值。
- 定义线程应使用时的最小阈值。
- 指定放弃前的尝试次数。
- 一个可选的回调,用于监控下载进度。
- 如果服务器不支持范围,则回退到单个线程。
- 如果服务器不返回内容长度,则回退到单个线程。
- 在失败后重试时交替使用镜像。
示例
extern crate reqwest;
extern crate parallel_getter;
use reqwest::Client;
use parallel_getter::ParallelGetter;
use std::fs::File;
use std::path::PathBuf;
use std::sync::Arc;
let client = Arc::new(Client::new());
let mut file = File::create("new_file").unwrap();
ParallelGetter::new("url_here", &mut file)
// Additional mirrors that can be used.
.mirrors(&["mirror_a", "mirror_b"])
// Optional client to use for the request.
.client(client)
// Optional path to store the parts.
.cache_path(PathBuf::from("/a/path/here"))
// Number of theads to use.
.threads(5)
// threshold (length in bytes) to determine when multiple threads are required.
.threshold_parallel(1 * 1024 * 1024)
// threshold for defining when to store parts in memory or on disk.
.threshold_memory(10 * 1024 * 1024)
// Callback for monitoring progress.
.callback(16, Box::new(|progress, total| {
println!(
"{} of {} KiB downloaded",
progress / 1024,
total / 1024
);
}))
// Commit the parallel GET requests.
.get();
依赖关系
~19–30MB
~538K SLoC