2 回答

TA貢獻(xiàn)1866條經(jīng)驗(yàn) 獲得超5個(gè)贊
可以看到 to 的第一個(gè)參數(shù)NewLimiter
是 type?rate.Limit
。
如果您想要 40 個(gè)請(qǐng)求/秒,那么這將轉(zhuǎn)化為每 25 毫秒 1 個(gè)請(qǐng)求的速率。
您可以通過執(zhí)行以下操作來創(chuàng)建它:
limiter?:=?rate.NewLimiter(rate.Every(25?*?time.Millisecond),?2)
邊注:
在生成中,上下文
ctx
不應(yīng)存儲(chǔ)在結(jié)構(gòu)中,而應(yīng)按請(qǐng)求存儲(chǔ)??雌饋頃?huì)Client
被重用,因此您可以將上下文傳遞給RateLimitFunc()
或 適當(dāng)?shù)牡胤?,而不是在客戶端結(jié)構(gòu)上存儲(chǔ)單個(gè)上下文。

TA貢獻(xiàn)1794條經(jīng)驗(yàn) 獲得超8個(gè)贊
func RateLimit(ctx context.Context) {
? ? limiter := rate.NewLimiter(40, 10)
? ? err := limiter.Wait(ctx)
? ? if err != nil {
? ? ? ? // Log the error and return
? ? }
? ? // Do the actual work here
}
- 2 回答
- 0 關(guān)注
- 183 瀏覽
添加回答
舉報(bào)