Middle+
Go тілінде параллель HTTP сұрауларын қалай жазуға болады?
sobes.tech AI
AI-дан жауап
Go тілінде параллель HTTP сұрауларын орындау үшін әдетте горутиндер мен барлық сұраулардың аяқталуын күту үшін sync.WaitGroup пайдаланылады.
Мысал:
package main
import (
"fmt"
"net/http"
"sync"
)
func fetch(url string, wg *sync.WaitGroup) {
defer wg.Done()
resp, err := http.Get(url)
if err != nil {
fmt.Printf("%s-ке сұрау кезінде қате: %v\n", url, err)
return
}
defer resp.Body.Close()
fmt.Printf("%s-ден жауап: %s\n", url, resp.Status)
}
func main() {
urls := []string{
"https://golang.org",
"https://google.com",
"https://github.com",
}
var wg sync.WaitGroup
wg.Add(len(urls))
for _, url := range urls {
go fetch(url, &wg)
}
wg.Wait()
fmt.Println("Барлық сұраулар аяқталды")
}
Бұл мысалда әр URL үшін жеке горутина іске қосылады, ол HTTP сұрауын орындайды. WaitGroup барлық сұраулардың аяқталуын күтеді, содан кейін ғана бағдарлама шығады.