我有一個大約2000個用戶對象(地圖)的數組,我需要調用API來獲取用戶詳細信息 - >處理響應 - >儘快更新我的本地數據庫。我使用Go的waitgroup和goroutine來實現併發請求發送方法,但是如果要調用2000個請求,我的2014 Macbook Pro需要大約24秒。無論如何要讓它更快?發送多個HTTP請求的最快方式
var wg sync.WaitGroup
json.Unmarshal(responseData, &users)
wg.Add(len(users))
for i:= 0; i<len(users); i++ {
go func(userid string){
url := "https://www.example.com/user_detail/"+ userid
response, _ := http.Get(url)
defer response.Body.Close()
data, _ := ioutil.ReadAll(response.Body)
wg.Done()
}(users[i]["userid"])
}
wg.Wait()
你有沒有試過_not_使2000個併發請求?通常將開放連接限制爲某種理智的價值更有效。 – JimB
看起來你可以在這裏改進一些東西,也許第三方API支持檢索用戶的批量操作? –
從理論上講,使用併發時,速度與最慢的進程一樣快。那麼你是否檢查了最慢響應的網絡指標? – stratovarius