La méthode pour limiter le nombre de requêtes dans le langage Go est la suivante : 1. Créer un exemple de fichier Go ; 2. Importer les packages requis et définir le nombre maximum de requêtes simultanées "concurrence" ; requêtes via le canal sem et bloquer les autres requêtes. La syntaxe est "sem := make(chan struct{}, concurrency)" jusqu'à ce qu'un canal inactif soit disponible.
Le système d'exploitation de ce tutoriel : système Windows 10, version Go1.20.1, ordinateur Dell G3.
Le langage Go fournit un type de données appelé canal. Vous pouvez utiliser ce canal pour contrôler le nombre de demandes.
Ce qui suit est un exemple de code, utilisant un canal avec cache, définissant le nombre maximum de requêtes comme capacité et bloquant chaque fois qu'une requête est envoyée jusqu'à ce qu'il y ait une capacité de canal libre avant de continuer la requête :
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) }
Dans le Dans l'exemple ci-dessus, nous avons lancé 10 requêtes HTTP, mais seulement 3 requêtes se sont produites en même temps car nous avons défini la concurrence maximale dans le canal Sem. De cette façon, lorsque nous atteignons la limite de simultanéité, toutes les autres requêtes seront bloquées (sem <- struct {}{}) jusqu'à ce qu'un canal gratuit soit disponible.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!