您的位置:首页 > 其它

rate limiting

2016-01-28 10:05 435 查看
package
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())

    }

}


                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: