Documentation ¶
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Clock ¶
Clock is the minimum necessary interface to instantiate a rate limiter with a clock or mock clock, compatible with clocks created using github.com/andres-erbsen/clock.
type Limiter ¶
type Limiter interface { // Take should block to make sure that the RPS is met. Take() time.Time FixedTake() Current() int64 Done() }
Limiter is used to rate-limit some process, possibly across goroutines. The process is expected to call Take() before every iteration, which may block to throttle the goroutine.
type Option ¶
type Option interface {
// contains filtered or unexported methods
}
Option configures a Limiter.
var WithoutSlack Option = slackOption(0)
WithoutSlack configures the limiter to be strict and not to accumulate previously "unspent" requests for future bursts of traffic.
func Per ¶
Per allows configuring limits for different time windows.
The default window is one second, so New(100) produces a one hundred per second (100 Hz) rate limiter.
New(2, Per(60*time.Second)) creates a 2 per minute rate limiter.