Berater
All systems have limits, beyond which they tend to fail. Berater makes working within limits easy and the inevitable failures more graceful.
require 'berater'
require 'redis'
Berater.configure do |c|
c.redis = Redis.new
end
Berater(:key, 3) do
# allow only three simultaneous requests with a concurrency limiter
end
Berater(:key, 2, interval: :minute) do
# or do work twice per minute with a rate limiter
end
See documentation for details.
Contributing
Yes please :)
- Fork it
- Create your feature branch (
git checkout -b my-feature
) - Ensure the tests pass (
bundle exec rspec
) - Commit your changes (
git commit -am 'awesome new feature'
) - Push your branch (
git push origin my-feature
) - Create a pull request
Inspired by
https://stripe.com/blog/rate-limiters
https://github.blog/2021-04-05-how-we-scaled-github-api-sharded-replicated-rate-limiter-redis