Rumah > masalah biasa > Cara mengehadkan bilangan permintaan dalam bahasa go

Cara mengehadkan bilangan permintaan dalam bahasa go

尊渡假赌尊渡假赌尊渡假赌
Lepaskan: 2023-06-09 13:23:55
asal
1236 orang telah melayarinya

Kaedah untuk mengehadkan bilangan permintaan dalam bahasa Go ialah: 1. Buat fail sampel Go 2. Import pakej yang diperlukan dan tetapkan bilangan maksimum permintaan serentak "concurrency" 3. Hadkan maksimum bilangan concurrency melalui saluran sem Sekat permintaan lain, sintaksnya ialah "sem := make(chan struct{}, concurrency)" sehingga saluran terbiar tersedia.

Cara mengehadkan bilangan permintaan dalam bahasa go

Sistem pengendalian untuk tutorial ini: Sistem Windows 10, versi Go1.20.1, komputer Dell G3.

Bahasa Go menyediakan jenis data yang dipanggil saluran. Anda boleh menggunakan saluran ini untuk mengawal bilangan permintaan.

Berikut ialah beberapa contoh kod, menggunakan saluran dengan cache, menetapkan bilangan maksimum permintaan sebagai kapasiti dan menyekat setiap kali permintaan dihantar sehingga terdapat kapasiti saluran percuma sebelum meneruskan permintaan:

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)
}
Salin selepas log masuk

Dalam contoh di atas, kami memulakan 10 permintaan HTTP, tetapi hanya 3 permintaan berlaku pada masa yang sama kerana kami menetapkan konkurensi maksimum dalam saluran sem. Dengan cara ini, apabila kami mencapai had konkurensi, semua permintaan lain akan disekat (sem <- struct {}{}) sehingga saluran percuma tersedia

Atas ialah kandungan terperinci Cara mengehadkan bilangan permintaan dalam bahasa go. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan