4 个版本
0.2.2 | 2022年3月21日 |
---|---|
0.2.1 | 2022年3月11日 |
0.2.0 | 2022年3月10日 |
0.1.0 | 2022年3月10日 |
10 in #poem-web
10KB
190 代码行
为 Poem 框架提供的限流中间件
使用方法
请检查 示例,poem-ratelimit
在 crates.io 上可用。
使用 yaml
配置文件设置全局服务、每个IP和路由的限值
global:
# Global limit for all connections
max_requests: 20
# Seconds to refresh limit, we allow 20req/30s here
time_window: 30
ip:
# QPS limit for a single client IP
max_requests: 10
time_window: 30
route:
/:
# QPS limit for a single route
max_requests: 5
time_window: 30
工作原理
对于每个请求,我们使用滑动窗口算法检查请求是否可处理。存储在Redis中的排序列表,其键类似于IP、路由。您可以在 lib.rs
中检查 lua
脚本。
许可证
poem-ratelimit
采用 Apache-2.0 许可证。
lib.rs
:
为 poem 网页框架提供的限流中间件
此中间件用于限制每秒的请求数量。使用Redis存储数据。
依赖项
~16–28MB
~448K SLoC