刚开始了解戈鲁丁的力量。
我有大约100个帐户和大约10个区域,循环浏览它们以创建~1000个goroutine,以提高阅读速度。它工作得太快了,以至于达到了20 /秒的API返回限制。
如何确保所有戈鲁丁都能保持在 (20/s) 的最大呼叫速率?我不确定哪种 golang 并发方法最适合一起处理错误。
例如:
func readInstance(acc string, region string, wg *sync.WaitGroup) {
defer wg.Done()
response, err := client.DescribeInstances(acc, region)
if err != nil {
log.Println(err) // API limit exceeding 20
return
}
.
.
.
.
}
func main() {
accounts := []string{"g", "h", "i", ...}
regions := []string{"g", "h", "i", ...}
for _, region := range regions {
for i := 0; i < len(accounts); i++ {
wg.Add(1)
go readInstance(accounts[i], region, &wg)
}
}
wg.Wait()
}
缥缈止盈
噜噜哒
相关分类