kit: github.com/go-kit/kit/ratelimit Index | Files

package ratelimit

import "github.com/go-kit/kit/ratelimit"

Index

Package Files

token_bucket.go

Variables

var ErrLimited = errors.New("rate limit exceeded")

ErrLimited is returned in the request path when the rate limiter is triggered and the request is rejected.

func NewDelayingLimiter Uses

func NewDelayingLimiter(limit Waiter) endpoint.Middleware

NewDelayingLimiter returns an endpoint.Middleware that acts as a request throttler. Requests that would exceed the maximum request rate are delayed via the Waiter function

func NewErroringLimiter Uses

func NewErroringLimiter(limit Allower) endpoint.Middleware

NewErroringLimiter returns an endpoint.Middleware that acts as a rate limiter. Requests that would exceed the maximum request rate are simply rejected with an error.

func NewTokenBucketLimiter Uses

func NewTokenBucketLimiter(tb *ratelimit.Bucket) endpoint.Middleware

NewTokenBucketLimiter returns an endpoint.Middleware that acts as a rate limiter based on a token-bucket algorithm. Requests that would exceed the maximum request rate are simply rejected with an error.

func NewTokenBucketThrottler Uses

func NewTokenBucketThrottler(tb *ratelimit.Bucket, _ func(time.Duration)) endpoint.Middleware

NewTokenBucketThrottler returns an endpoint.Middleware that acts as a request throttler based on a token-bucket algorithm. Requests that would exceed the maximum request rate are delayed. The parameterized function "_" is kept for backwards-compatiblity of the API, but it is no longer used for anything. You may pass it nil.

type Allower Uses

type Allower interface {
    Allow() bool
}

Allower dictates whether or not a request is acceptable to run. The Limiter from "golang.org/x/time/rate" already implements this interface, one is able to use that in NewErroringLimiter without any modifications.

func NewAllower Uses

func NewAllower(tb *ratelimit.Bucket) Allower

NewAllower turns an existing ratelimit.Bucket into an API-compatible form

type AllowerFunc Uses

type AllowerFunc func() bool

AllowerFunc is an adapter that lets a function operate as if it implements Allower

func (AllowerFunc) Allow Uses

func (f AllowerFunc) Allow() bool

Allow makes the adapter implement Allower

type Waiter Uses

type Waiter interface {
    Wait(ctx context.Context) error
}

Waiter dictates how long a request must be delayed. The Limiter from "golang.org/x/time/rate" already implements this interface, one is able to use that in NewDelayingLimiter without any modifications.

func NewWaiter Uses

func NewWaiter(tb *ratelimit.Bucket) Waiter

NewWaiter turns an existing ratelimit.Bucket into an API-compatible form

type WaiterFunc Uses

type WaiterFunc func(ctx context.Context) error

WaiterFunc is an adapter that lets a function operate as if it implements Waiter

func (WaiterFunc) Wait Uses

func (f WaiterFunc) Wait(ctx context.Context) error

Wait makes the adapter implement Waiter

Package ratelimit imports 5 packages (graph) and is imported by 21 packages. Updated 2017-07-26. Refresh now. Tools for package owners.