Junior — Senior
54
Анализ параллельных HTTP‑запросов и оценка недостатков подхода
Компании, где спрашивали:
Lamoda Tech
Условие задачи
Необходимо рассмотреть представленный пример кода, который инициирует несколько HTTP‑запросов одновременно при помощи goroutine. Требуется определить, какие потенциальные проблемы могут возникнуть при таком способе выполнения и какие есть варианты их решения или оптимизации.
func main() {
urls := []string{
"https://www.lamoda.ru",
"https://www.yandex.ru",
"https://www.mail.ru",
"https://www.google.com",
}
for _, url := range urls {
go func(url string) {
fmt.Printf("Fetching %s...\n", url)
err := fetchUrl(url)
if err != nil {
fmt.Printf("Error fetching %s: %v\n", url, err)
return
}
fmt.Printf("Fetched %s\n", url)
}(url)
}
fmt.Println("All requests launched!")
time.Sleep(400 * time.Millisecond)
fmt.Println("Program finished.")
}
func fetchUrl(url string) error {
// err := http.Get(url)
return nil
}