3 releases

0.3.2 Mar 31, 2023
0.3.1 Mar 30, 2023
0.3.0 Mar 28, 2023
0.2.0 Aug 30, 2020
0.1.0 Jun 2, 2020

#1910 in Asynchronous

Download history 2103/week @ 2024-10-30 2358/week @ 2024-11-06 3223/week @ 2024-11-13 2286/week @ 2024-11-20 2193/week @ 2024-11-27 3098/week @ 2024-12-04 2566/week @ 2024-12-11 1982/week @ 2024-12-18 1054/week @ 2024-12-25 2379/week @ 2025-01-01 2463/week @ 2025-01-08 4214/week @ 2025-01-15 3493/week @ 2025-01-22 3464/week @ 2025-01-29 3275/week @ 2025-02-05 3593/week @ 2025-02-12

14,676 downloads per month
Used in 2 crates (via tokio-utils)

MIT license

18KB
277 lines

Async Throttle

github crates.io docs.rs build status codecov

Asynchronous Rate Limiting

This crate provides coarse and fine-grained ways to throttle the rate at which asynchronous tasks are executed.

Usage

Add this to your Cargo.toml:

[dependencies]
async-throttle = "0.3.2"

You can use the fine-grained rate limiter like so:

#[tokio::main]
async fn main() {
   let period = std::time::Duration::from_secs(5);
   let rate_limiter = MultiRateLimiter::new(period);
    
   // This completes instantly
   rate_limiter.throttle("foo", || computation()).await;

   // This completes instantly
   rate_limiter.throttle("bar", || computation()).await;

   // This takes 5 seconds to complete because the key "foo" is rate limited
   rate_limiter.throttle("foo", || computation()).await;
}

Dependencies

~3.5–9.5MB
~77K SLoC