Junior — Senior
Анализ параллельных HTTP‑запросов и оценка недостатков подхода
livecode
Condizione del compito
Необходимо рассмотреть представленный пример кода, который инициирует несколько 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
}