一个采用令牌桶算法的第三方包,可以帮助我们实现速率限制:
GitHub - juju/ratelimit: Efficient token-bucket-based rate limiter package.
package main
import (
"bytes"
"fmt"
"io"
"time"
"github.com/juju/ratelimit"
)
func main() {
// Source holding 1MB
src := bytes.NewReader(make([]byte, 1024*1024))
// Destination
dst := &bytes.Buffer{}
// Bucket adding 100KB every second, holding max 100KB
bucket :