#download #request #https #client #http #rate-limiting

ml-downloader

基于 reqwest 的简单阻塞式下载器

2 个版本

0.1.1 2023 年 8 月 18 日
0.1.0 2022 年 2 月 27 日

#374 in HTTP 客户端

MIT 许可证

18KB
232

ml-downloader

简单阻塞式下载器,具有以下特性:

  • 自定义延迟的重试
  • 成功下载之间的自定义间隔,用于限速
  • 哈希检查(可选)
  • 基于 reqwest

示例

简单用法

使用默认配置创建 Downloader 并下载一个文件。

use ml_downloader::Downloader;

let mut downloader = Downloader::new()?;
let bytes = downloader.get("https://example.com/").send()?;
# Ok::<(), ml_downloader::Error>(())

自定义配置

使用以下配置创建 Downloader

  • "foobar/1.0" 作为 USER_AGENT
  • 1.0 - 1.1 秒的下载成功间隔
  • 下载失败后重试两次
    • 2.0 - 2.2 秒的初始失败延迟
    • 5.0 - 5.5 秒的第二次失败延迟
use ml_downloader::Downloader;

let mut downloader = Downloader::builder()
    .reqwest(|cb| cb.user_agent("foobar/1.0"))
    .interval(1.0, 1.1)
    .retry_delays(&[(2.0, 2.2), (5.0, 5.5)])
    .build()?;

# Ok::<(), ml_downloader::Error>(())

依赖

~3–17MB
~219K SLoC