An open API service indexing awesome lists of open source software.

https://github.com/thewawar/bucket-limiter-rs

Token bucket like limiter library based on redis storage (Rust version)
https://github.com/thewawar/bucket-limiter-rs

bucket limiter redis rust token

Last synced: 10 months ago
JSON representation

Token bucket like limiter library based on redis storage (Rust version)

Awesome Lists containing this project

README

          

* bucket-limiter-rs
Token bucket like limiter library based on redis storage

[[https://github.com/TheWaWaR/bucket-limiter-py][Python version]]

* Example (use case)
Assume you have a API service, and want to limit user request rate like:

- 10,000 requests/day
- 600 requests/1-hour
- 10 requests/10-seconds

You can do this:

#+BEGIN_SRC rust
let limiter = RedisLimiter::default();
let key = format!("{}:{}", request.endpoint, request.method);
// Once one request has come
if limiter.consume(vec![
(key.as_str(), 10, 10, 1),
(key.as_str(), 3600, 600, 1),
(key.as_str(), 24*3600, 10000, 1)]).is_ok() {
// Process the request
} else {
// Reject the request
}
#+END_SRC