当前位置:   article > 正文

Golang的几种限流 package的用法_go redis_rate

go redis_rate

go.uber.org/ratelimit

  1. package rlimit
  2. import (
  3. "fmt"
  4. "log"
  5. "testing"
  6. "time"
  7. "go.uber.org/ratelimit"
  8. )
  9. func TestRatelimit(t *testing.T) {
  10. rl := ratelimit.New(5) // per second
  11. log.Println("begin")
  12. prev := time.Now()
  13. for i := 0; i < 20; i++ {
  14. now := rl.Take()
  15. if i > 0 {
  16. fmt.Println(time.Now().String(), i, now.Sub(prev))
  17. }
  18. prev = now
  19. }
  20. log.Println("end")
  21. }

运行结果:

[@hbhly_x_128 rlimit]$ go test -v ./
=== RUN   TestRatelimit
2022/03/26 16:57:41 begin
2022-03-26 16:57:42.014050639 +0800 CST m=+0.201108898 1 200ms
2022-03-26 16:57:42.21436404 +0800 CST m=+0.401422303 2 200ms
2022-03-26 16:57:42.415431893 +0800 CST m=+0.602490176 3 200ms
2022-

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/IT小白/article/detail/468523
推荐阅读
相关标签
  

闽ICP备14008679号