3 releases
0.3.2 | Mar 31, 2023 |
---|---|
0.3.1 | Mar 30, 2023 |
0.3.0 | Mar 28, 2023 |
0.2.0 |
|
0.1.0 |
|
#1881 in Asynchronous
10,735 downloads per month
Used in tokio-utils
18KB
277 lines
Async Throttle
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–10MB
~76K SLoC