Назад к задачам
Junior
102

Оптимизация массовых HTTP-запросов

Компании, где спрашивали:

AvitoAvito
Получайте помощь с лайвкодингом в реальном времени с Sobes Copilot
Условие задачи

Нужно адаптировать реализацию параллельных HTTP-запросов к большому числу URL-адресов, чтобы избежать чрезмерного потребления ресурсов. Требуется ограничить количество одновременно выполняемых запросов

func printCodes(urls []string) {
    var wg sync.WaitGroup
    wg.Add(len(urls))

    get := func(url string) {
        resp, err := http.Get(url)
        if err != nil {
            log.Fatal(err)
        }
        defer resp.Body.Close()
        fmt.Println(url, resp.Status)
        defer wg.Done()
    }

    for _, url := range urls {
        url := url
        go get(url)
    }

    wg.Wait()
}