есть большой массив данных. Для каждого элемента нужно выполнить хттп запрос и сложить все в массив. Начал я так:
var wg sync.WaitGroup
errorChannel := make(chan error)
wg.Add(len(tickers))
var items []*Items
for i, ticker := range tickers {
go func(t *models.Ticker) {
defer wg.Done()
info, err := fetch.GetInfo(t.TickerID)
if err != nil {
errorChannel <- err
}
items = append(items, info)
}(ticker)
}
wg.Wait()
Но так как запросов много, очевидно столкнулся с утечкой памяти (все начинает жестко виснуть)
Как настроить Http клиент чтоб работало ок? Увеличить кол-во соединений? Настроить transport? Или дело в другом?
а где wg.Add?
утечка в том что из errChannel никто не читает, и твои горутины в случе ошибки тупо висят
я в конце функции сразу возвращаю ошибку return <-errorChannel По идее, не должно висеть из этого? Но я могу конечно ошибаться
Обсуждают сегодня