Skip to content

Ratekeeper is a library for scheduling rate-limited actions.

License

Notifications You must be signed in to change notification settings

whitered/ratekeeper

Folders and files

NameName
Last commit message
Last commit date

Latest commit

0b46680 · Jul 14, 2018

History

31 Commits
Jul 6, 2018
Jul 11, 2018
Jul 6, 2018
Jul 5, 2018
Jul 5, 2018
Jul 8, 2018
Jul 14, 2018
Jul 14, 2018
Jul 8, 2018

Repository files navigation

Ratekeeper

Ratekeeper is a library for scheduling rate-limited actions. It supports complex rate limits and estimates time left to resetting limits.

Installation

Add ratekeeper as dependency in mix.exs

def deps do
    [{:ratekeeper, "~> 0.2"}]
end

Usage

Limits can be set in config:

config :ratekeeper, :limits, %{"myapi.org" => [{1000, 5}, {60_000, 100}]}

or at runtime:

Ratekeeper.add_limit "myapi.org", 1000, 5
Ratekeeper.add_limit "myapi.org", 60_000, 100

This sets limits to 5 requests per 1 second and 100 requests per minute.

Appoint a request to rate limited api:

case Ratekeeper.register("myapi.org", 10_000) do
  nil ->
    raise "Rate limits exceeded, request not allowed in next 10 seconds"
  delay ->
    :timer.sleep(delay)
    MyApi.do_request()
end

Full documentation can be found at https://hexdocs.pm/ratekeeper.

About

Ratekeeper is a library for scheduling rate-limited actions.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages