| Crates.io | async-throttle |
| lib.rs | async-throttle |
| version | 0.3.2 |
| created_at | 2020-06-02 13:50:17.603375+00 |
| updated_at | 2023-03-31 04:30:56.853418+00 |
| description | Asynchronous Rate Limiting |
| homepage | https://github.com/wcygan/async-throttle |
| repository | https://github.com/wcygan/async-throttle |
| max_upload_size | |
| id | 249254 |
| size | 17,976 |
Asynchronous Rate Limiting
This crate provides coarse and fine-grained ways to throttle the rate at which asynchronous tasks are executed.
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;
}