rate limiting
2016-01-28 10:05
435 查看
package
main
main
import "time"
import "fmt"
func main() {
requests := make(chan int, 5)
for i := 1; i < 5; i++ {
requests <- i
}
close(requests)
limiter := time.Tick(time.Millisecond * 200)
for req := range requests {
<-limiter
fmt.Println("request", req, time.Now())
}
burstylimiter := make(chan time.Time, 3)
for i := 0; i < 3; i++ {
burstylimiter <- time.Now()
}
go func() {
for t := range time.Tick(time.Millisecond * 200) {
burstylimiter <- t
}
}()
burstyRequests := make(chan int, 5)
for i := 1; i <= 5; i++ {
burstyRequests <- i
}
close(burstyRequests)
for req := range burstyRequests {
<-burstylimiter
fmt.Println("request", req, time.Now())
}
}
相关文章推荐
- 二次规划问题和MATLAB函数quadprog的使用
- DHC谷歌浏览器插件的安装步骤
- radiobutton 选择框和文字间距的设置方法
- jquery mTime 手机日期选择插件修改
- Django搭配Celery进行异步/定时任务(一)初步搭建
- memcache的一致性hash算法使用
- PHP里关于时间日期大小写(Y,y,M,m...)
- 在CentOS 6.7中安装 latex2html, 实现 latex 自动转化为 word
- iOS中 基于LBXScan库二维码扫描 韩俊强的博客
- iOS中 基于LBXScan库二维码扫描 韩俊强的博客
- UINavigationController 弹出新的UIViewController时,setNavigationBarHidden失效的问题
- Spring学习笔记(十七):spring配置文件详解以及beans:beans标签
- knockout 多值绑定
- 启动Tomcat报异常host-manager does not exist or is not a readable directory
- 单机系统和分布式系统相关概念对比
- Latex入门
- hdu2795 Billboard
- php扩展安装
- java Runtime.getRuntime().exec 调用系统脚本/命令注意事项
- android.hardware.camera2使用指南