messua/layer/rate_limit
Values
pub fn make_layer(
requests: Int,
over_seconds: Int,
housekeep_every: Int,
) -> fn(
minc.Incoming(state),
fn(minc.Incoming(state)) -> Result(
response.Response(mist.ResponseData),
fail.Failure,
),
) -> Result(response.Response(mist.ResponseData), fail.Failure)
This makes an IP-based rate-limiting Layer that will allow requests
requests from any given IP in the space of over_seconds seconds.
Any more requests than that in a given time period will be automatically
rejected with a 429 and not passed to the inner Handler.
The housekeep_every argument controls how often the map of timers
is crawled through to prune expired ones. Larger values will result in
less frequent pauses, but possibly more memory usage.