Thanks to visit codestin.com
Credit goes to github.com

Skip to content

neutralinsomniac/goralim

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

7 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

banner

Goralim

goralim is a Golang package that provides a rate limiter based on Token bucket algorithm. It is capabale to handle distributed workload with its redis database support. It has HTTP server middleware support (as of now).

🚧 this is a beta version now and under active development. For production use, fork it and made changes based on your need.

Install

go get "github.com/0verread/goralim" -m

Usage

import (
  goralim "github.com/0verread/goralim"
)

	// Redis initialization
	config := goralim.RedisConfig {
		HOST: "127.0.0.1",
		PORT: 6379,
    // password
		PASS: "",
	}
	redisStore := goralim.NewRedisClient(config)

	// setup rate limiter for a key (key can be userId/client)
	// 10 is bucket size, 5 is bucket refill rate per second
	tb := goralim.NewTokenBucket("key123", redisStore, 10, 5)

	// create HTTP server and setup a goralim middleware to put a rate limiter
	handler := http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
		fmt.Fprintln(w, "Hey There this is a Request")
	})

	rateLimitedHandler := goralim.RateLimiter(tb, handler)
	http.ListenAndServe(":8080", rateLimitedHandler)

License

Under MIT license

About

A rate limiting package for Go to handle distributed workloads

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Go 100.0%