berater_rb
berater_rb copied to clipboard
work within limits
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 at a time, with a concurrency limiter
end
Berater(:key, 2, interval: 60) 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
https://en.wikipedia.org/wiki/Leaky_bucket