Ich muss mehrere URL gleichzeitig aufrufen. Meine Funktionen werden zur gleichen Zeit aufgerufen (in Millisekunden), aber sobald ich eine HTTP-Post-Anfrage an den Code anfüge, wird dieser nacheinander aufgerufen. Unten ist der Code:Golang: Simultane Funktion Anrufe für HTTP-Anfrage
Check(url1)
Check(url2)
func Check(xurl string) {
nowstartx := time.Now()
startnanos := nowstartx.UnixNano()
nowstart := startnanos/1000000
fmt.Println(nowstart)
json = {"name" : "test"}
req, err := http.NewRequest("POST", xurl, bytes.NewBuffer(json))
req.Header.Set("X-Custom-Header", "myvalue")
req.Header.Set("Content-Type", "application/json")
client := &http.Client{}
resp, err := client.Do(req)
if err != nil {
panic(err)
} else {
defer resp.Body.Close()
body, _ = ioutil.ReadAll(resp.Body)
}
}
Hilfe zu schätzen, ich brauche die gleiche Zeit zu erhalten (in Millisekunden), wenn ich das Programm auszuführen.
zur gleichen Zeit sind Sie nie, Sie waren jeweils seriell nennen erreicht, wurden sie sehr schnell gerade ausgeführt. Haben Sie eine Dokumentation zur Go-Parallelität gelesen? Zum Beispiel: https://tour.golang.org/concurrency/1 – JimB
Ich ging durch diese https://www.goinggo.net/2014/01/concurrency-goroutines-and-gomaxprocs.html und es sollte gleichzeitig aufrufen. Ich habe es mehrere Male versucht und es tatsächlich gleichzeitig aufgerufen, außer wenn ich die Post-Anfrage hinzugefügt. Gibt es eine Möglichkeit, mehrere HTTP-Post-Anfragen gleichzeitig aufzurufen? – ChrisDave
Nein, wo Sie eine neue Goroutine starten, also fügen Sie keine Nebenläufigkeit hinzu und diese 2 Aufrufe können nicht gleichzeitig ausgeführt werden. – JimB