throttled

Package throttled implements rate limiting access to resources such as HTTP endpoints.

  • Owner: throttled/throttled
  • Platform:
  • License:: BSD 3-Clause "New" or "Revised" License
  • Category::
  • Topic:
  • Like:
    0
      Compare:

Github stars Tracking Chart

Throttled build status GoDoc

Package throttled implements rate limiting using the generic cell rate
algorithm
to limit access to resources such as HTTP endpoints.

The 2.0.0 release made some major changes to the throttled API. If
this change broke your code in problematic ways or you wish a feature
of the old API had been retained, please open an issue. We don't
guarantee any particular changes but would like to hear more about
what our users need. Thanks!

Installation

go get -u github.com/throttled/throttled

Documentation

API documentation is available on godoc.org. The following
example demonstrates the usage of HTTPLimiter for rate-limiting access
to an http.Handler to 20 requests per path per minute with bursts of
up to 5 additional requests:

store, err := memstore.New(65536)
if err != nil {
	log.Fatal(err)
}

quota := throttled.RateQuota{throttled.PerMin(20), 5}
rateLimiter, err := throttled.NewGCRARateLimiter(store, quota)
if err != nil {
	log.Fatal(err)
}

httpRateLimiter := throttled.HTTPRateLimiter{
	RateLimiter: rateLimiter,
	VaryBy:      &throttled.VaryBy{Path: true},
}

http.ListenAndServe(":8080", httpRateLimiter.RateLimit(myHandler))

See throttled/gcra for a list of other projects related to
rate limiting and GCRA.

Release

  1. Update CHANGELOG.md. Please use semantic versioning and the existing
    conventions established in the file. Commit the changes with a message like
    Bump version to 2.2.0.
  2. Tag master with a new version prefixed with v. For example, v2.2.0.
  3. git push origin master --tags.
  4. Publish a new release on the releases page. Copy the body from the
    contents of CHANGELOG.md for the version and follow other conventions from
    previous releases.

License

The BSD 3-clause license. Copyright (c) 2014 Martin Angers and contributors.

Main metrics

Overview
Name With Ownerthrottled/throttled
Primary LanguageGo
Program languageGo (Language Count: 3)
Platform
License:BSD 3-Clause "New" or "Revised" License
所有者活动
Created At2014-02-19 12:13:32
Pushed At2025-01-23 17:00:34
Last Commit At2025-01-23 09:00:11
Release Count26
Last Release Namev2.13.0 (Posted on )
First Release Namev1.0.0 (Posted on )
用户参与
Stargazers Count1.5k
Watchers Count23
Fork Count97
Commits Count215
Has Issues Enabled
Issues Count46
Issue Open Count9
Pull Requests Count55
Pull Requests Open Count0
Pull Requests Close Count3
项目设置
Has Wiki Enabled
Is Archived
Is Fork
Is Locked
Is Mirror
Is Private