Request throttling middleware for the elli webserver
Switch branches/tags
Nothing to show
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.

Throttling Middleware for Elli

This middleware provides request throttling to limit the number of requests a given peer may perform per hour/day.

The peer will be identified by its IP address or by a user-supplied identity function. Among other things, this opens the possibility to throttle by path or throttle a service over all clients.


This is still work in progress with a very basic set of functionality. Get in touch if you would like to see additional use cases implemented.


Use it together with the Elli webserver like this:

-export([start_link/0, identity_fun/1]).

start_link() ->
    ThrottleConfig = [
                      {hourly_limit, 3600},   %% (default)
                      {daily_limit , 86400},  %% (default)
                      {identity_fun, fun my_elli_stuff:identity_fun/1}

    Config = [
              {mods, [
                      {elli_throttle, ThrottleConfig},
                      {elli_example_callback, []}

    elli:start_link([{callback, elli_middleware},
                     {callback_args, Config}]).

identity_fun(Req) -> elli_request:peer(Req).  %% (default)