#rate-limiting #poem-web #web-framework #routes #middleware #ip #requests

poem-ratelimit

poem-ratelimit 是 Poem 网页框架的限流中间件

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

Apache-2.0

10KB
190 代码行

为 Poem 框架提供的限流中间件

使用方法

请检查 示例poem-ratelimitcrates.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