Die Methode zur Begrenzung der Anzahl der Anforderungen in der Go-Sprache ist: 1. Erstellen Sie eine Go-Beispieldatei. 2. Importieren Sie die erforderlichen Pakete und legen Sie die maximale Anzahl gleichzeitiger Anforderungen fest. 3. Begrenzen Sie die maximale Anzahl gleichzeitiger Anforderungen Anfragen über den SEM-Kanal und blockieren andere Anfragen. Die Syntax lautet „sem := make(chan struct{}, concurrency)“, bis ein freier Kanal verfügbar ist.
Das Betriebssystem dieses Tutorials: Windows 10-System, Go1.20.1-Version, Dell G3-Computer.
Go-Sprache bietet einen Datentyp namens Kanal. Über diesen Kanal können Sie die Anzahl der Anfragen steuern.
Das Folgende ist ein Beispielcode, der einen Kanal mit Cache verwendet, die maximale Anzahl von Anfragen als Kapazität festlegt und jedes Mal, wenn eine Anfrage gesendet wird, blockiert, bis freie Kanalkapazität vorhanden ist, bevor die Anfrage fortgesetzt wird:
package main import ( "fmt" "net/http" ) func main() { urls := []string{ "https://www.google.com", "https://www.facebook.com", "https://www.airbnb.com", "https://www.github.com", "https://www.twitter.com", "https://www.linkedin.com", "https://www.youtube.com", "https://www.microsoft.com", "https://www.reddit.com", "https://www.stackoverflow.com", } concurrency := 3 // 最大同时请求数量 sem := make(chan struct{}, concurrency) for _, url := range urls { sem <- struct{}{} go func(url string) { request(url) <-sem }(url) } for i := 0; i < concurrency; i++ { sem <- struct{}{} } } func request(url string) { res, err := http.Get(url) if err != nil { fmt.Printf("%s is down\n", url) return } defer res.Body.Close() fmt.Printf("%s -> status code: %d \n", url, res.StatusCode) }
In der Im obigen Beispiel haben wir 10 HTTP-Anfragen gestartet, es sind jedoch nur 3 Anfragen gleichzeitig aufgetreten, da wir die maximale Parallelität im Sem-Kanal festgelegt haben. Wenn wir das Parallelitätslimit erreichen, werden auf diese Weise alle anderen Anfragen blockiert (sem <- struct {}{}), bis ein freier Kanal verfügbar ist.
Das obige ist der detaillierte Inhalt vonSo begrenzen Sie die Anzahl der Anfragen in der Go-Sprache. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!