2 个版本
0.1.0-alpha.1 | 2024 年 4 月 24 日 |
---|
#451 in 异步
20KB
287 代码行
axum-limit
此 crate 提供了一种基于令牌桶的效率速率限制机制,专门设计用于具有强大提取器限制的异步 Web 应用程序。
功能
- 使用提取器配置速率限制,允许每个路由具有灵活的限制策略。
- 支持各种时间粒度的速率限制(每秒、每分钟、每小时和每天)。
- 易于与 Axum 集成,使用提取器在应用程序路由中无缝应用速率限制。
- 利用
DashMap
在异步任务之间进行并发状态管理。
示例
以下是一个基本示例,展示如何使用此 crate 与 Axum 路由一起使用
use axum_limit::{Limit, LimitState, LimitPerSecond};
use axum::{Router, routing::get};
async fn route_handler(_: LimitPerSecond<5, Uri>) -> impl IntoResponse {
// Handler logic here, automatically enforcing the rate limit
}
fn main() {
let _app = Router::new()
.route("/your_route", get(route_handler))
.with_state(LimitState::<Uri>::default());
}
此示例演示了在特定路由上设置每秒 5 个请求的速率限制。 Limit
提取器会自动根据传入的请求强制执行这些限制。
有关更全面的示例,请检查此存储库中的 examples
目录。
依赖项
~2.5–8MB
~66K SLoC