|
发表于 2024-8-3 21:58:58
|
显示全部楼层
限流工具
使用 golang.org/x/time/rate 包实现令牌桶算法
import (
"fmt"
"net/http"
"time"
"golang.org/x/time/rate"
)
func main() {
// 创建一个限流器,每秒允许 10 个请求,最大可存储 100 个令牌
limiter := rate.NewLimiter(10, 100)
http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
// 尝试获取令牌,如果获取失败,则返回 429 Too Many Requests 错误
if !limiter.Allow() {
http.Error(w, "Too Many Requests", http.StatusTooManyRequests)
return
}
// 处理请求
fmt.Fprintln(w, "Hello, Gopher!")
})
http.ListenAndServe(":8080", nil)
} |
|