poem-ratelimit

Crates.iopoem-ratelimit
lib.rspoem-ratelimit
version0.2.2
sourcesrc
created_at2022-03-10 03:51:04.038293
updated_at2022-03-21 16:00:28.169648
descriptionpoem-ratelimit is a ratelimit middleware for poem web framework.
homepagehttps://github.com/KernelErr/poem-ratelimit
repositoryhttps://github.com/KernelErr/poem-ratelimit
max_upload_size
id547298
size20,736
Rui Li (KernelErr)

documentation

README

Rate limit middleware for Poem framework

Usage

Check examples, poem-ratelimit is available on crates.io.

A yaml configuration file is used to set limit for global service, per IP and route:

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

How it works

For every requests, we use sliding window algorithm to check if the request is processable. Sorted lists with key like IP, route is stored in Redis. You can check the lua script in lib.rs.

License

poem-ratelimit is licensed under Apache-2.0.

Commit count: 6

cargo fmt