3 个不稳定版本

0.2.0 2024 年 5 月 4 日
0.1.1 2023 年 9 月 28 日
0.1.0 2023 年 9 月 28 日

#352 in HTTP 客户端

Download history 262/week @ 2024-04-29 144/week @ 2024-05-06 108/week @ 2024-05-13 114/week @ 2024-05-20 102/week @ 2024-05-27 141/week @ 2024-06-03 125/week @ 2024-06-10 92/week @ 2024-06-17 90/week @ 2024-06-24 105/week @ 2024-07-01 106/week @ 2024-07-08 141/week @ 2024-07-15 102/week @ 2024-07-22 112/week @ 2024-07-29 73/week @ 2024-08-05 79/week @ 2024-08-12

370 次每月下载
用于 reqwest-leaky-bucket

MIT 许可证

5KB

reqwest-ratelimit

reqwest-middleware 的速率限制中间件实现。

Crates.io Docs.rs

使用方法

use async_trait::async_trait;
use reqwest_middleware::{ClientBuilder, ClientWithMiddleware};

struct RateLimiter;

#[async_trait]
impl reqwest_ratelimit::RateLimiter for RateLimiter {
    async fn acquire_permit(&self) {
        // noop
    }
}

async fn run() {
    let client = ClientBuilder::new(reqwest::Client::new())
        .with(reqwest_ratelimit::all(RateLimiter))
        .build();

    client.get("https://crates.io").send().await.unwrap();
}

lib.rs:

基于 reqwest_middleware 构建的速率限制中间件。

您需要提供自己的 RateLimiter 实现。

示例

use async_trait::async_trait;
use reqwest_middleware::{ClientBuilder, ClientWithMiddleware};

struct RateLimiter;

#[async_trait]
impl reqwest_ratelimit::RateLimiter for RateLimiter {
    async fn acquire_permit(&self) {
        // noop
    }
}

async fn run() {
    let client = ClientBuilder::new(reqwest::Client::new())
        .with(reqwest_ratelimit::all(RateLimiter))
        .build();

    client.get("https://crates.io").send().await.unwrap();
}

依赖项

~3–14MB
~198K SLoC