#rate-limiting #reqwest-middleware #http-middleware #reqwest

reqwest-leaky-bucket

Leaky-bucket rate limit middleware for reqwest

5 releases (breaking)

new 0.5.0 Jan 9, 2026
0.4.0 Apr 29, 2025
0.3.0 Jan 9, 2025
0.2.0 May 19, 2024
0.1.0 Sep 29, 2023

#648 in HTTP client

Download history 1578/week @ 2025-09-19 732/week @ 2025-09-26 557/week @ 2025-10-03 870/week @ 2025-10-10 935/week @ 2025-10-17 935/week @ 2025-10-24 1089/week @ 2025-10-31 1052/week @ 2025-11-07 659/week @ 2025-11-14 1159/week @ 2025-11-21 1328/week @ 2025-11-28 783/week @ 2025-12-05 618/week @ 2025-12-12 455/week @ 2025-12-19 321/week @ 2025-12-26 980/week @ 2026-01-02

2,506 downloads per month

MIT license

11KB

Middleware to rate-limit requests built on reqwest_middleware, reqwest_ratelimit and leaky_bucket.

Provides a reqwest_ratelimit::RateLimiter adapter for leaky_bucket::RateLimiter.

Example


reqwest-leaky-bucket

leaky-bucket rate-limit middleware implementation for reqwest-middleware based on reqwest-ratelimit.

Crates.io Docs.rs

Usage

use reqwest_leaky_bucket::leaky_bucket::RateLimiter;
use reqwest_middleware::{ClientBuilder, ClientWithMiddleware};

async fn run() {
    let limiter = RateLimiter::builder().max(10).initial(0).refill(5).build();
    let client = ClientBuilder::new(reqwest::Client::new())
        .with(reqwest_leaky_bucket::rate_limit_all(limiter))
        .build();
    client.get("https://crates.io").send().await.unwrap();
}

Dependencies

~6–22MB
~228K SLoC