家政服务app软件开发关键功能和考虑因素有哪些?
896
2022-11-01
一个基于golang的速率限制(Rate Limiting)算法,超过设定速率阻塞程序
Go的一个令牌桶,类队列派发许可,用于资源有限或者被限制请求的情况下使用。
package mainimport ( "fmt" "github.com/Tokeniso/duoo")func main() { var number int32 = 500 // 每second许可数量 var second int32 = 3 // 秒 boolRate := duoo.RateStartWithDebug(number, second) for i:=0;i<2000;i++ { _, err := boolRate.GetPermission() if err != nil { } } for key, val := range boolRate.Count { fmt.Printf("循环批次:%d -- wait:%d -- retry:%d -- done:%d\n", key, val.Wait, val.Retry, val.Done) }}
输出
启动中....启动完成.refresh channel, tag: 0refresh channel, tag: 1refresh channel, tag: 2refresh channel, tag: 3循环批次:0 -- wait:501 -- retry:1 -- done:500循环批次:1 -- wait:501 -- retry:1 -- done:500循环批次:2 -- wait:501 -- retry:1 -- done:500循环批次:3 -- wait:500 -- retry:0 -- done:500Process finished with exit code 2
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。