Rumah > pembangunan bahagian belakang > Golang > Minta tetapan tamat masa dan amalan terbaik untuk http.Transport dalam bahasa Go

Minta tetapan tamat masa dan amalan terbaik untuk http.Transport dalam bahasa Go

王林
Lepaskan: 2023-07-22 16:13:13
asal
1767 orang telah melayarinya

Minta tetapan tamat masa dan amalan terbaik untuk http.Transport dalam bahasa Go

Dalam bahasa Go, http.Transport ialah perpustakaan permintaan rangkaian yang penting. Ia menyediakan satu siri kaedah dan pilihan untuk menetapkan tamat masa permintaan untuk membantu pembangun mengawal masa pelaksanaan permintaan dengan lebih baik dan mengelakkan pembaziran sumber. Artikel ini menerangkan cara untuk menetapkan tamat masa permintaan dan memberikan beberapa contoh kod untuk amalan terbaik.

Kaedah tetapan tamat masa

Dalam http.Transport, anda boleh menggunakan dua kaedah berikut untuk menetapkan tempoh tamat masa permintaan:

  1. Gunakan medan Tamat Masa

Tamat masa ialah medan http.Transport, mengikut jenis masa .Tempoh. Dengan menetapkan Tamat Masa, anda boleh menentukan tamat masa untuk keseluruhan permintaan, termasuk semua proses seperti mewujudkan sambungan, menghantar permintaan dan menerima respons. Contohnya adalah seperti berikut:

package main

import (
    "net/http"
    "time"
)

func main() {
    transport := &http.Transport{
        // 设置请求超时时间为5秒
        Timeout: 5 * time.Second,
    }

    client := &http.Client{
        Transport: transport,
    }

    resp, err := client.Get("http://example.com")
    if err != nil {
        // 处理错误
        return
    }

    // 处理响应
    defer resp.Body.Close()
}
Salin selepas log masuk
  1. Menggunakan medan Tarikh Akhir

Tarikh akhir ialah medan http.Permintaan, taip ialah masa.Masa. Dengan menetapkan tarikh akhir, anda boleh menetapkan tamat masa bebas untuk satu permintaan. Contohnya adalah seperti berikut:

package main

import (
    "net/http"
    "time"
)

func main() {
    req, err := http.NewRequest("GET", "http://example.com", nil)
    if err != nil {
        // 处理错误
        return
    }

    // 设置请求超时时间为5秒
    req.Header.Set("Timeout", "5s")
    req = req.WithContext(http.TimeoutContext(req.Context(), 5*time.Second))

    client := &http.Client{}
    resp, err := client.Do(req)
    if err != nil {
        // 处理错误
        return
    }

    // 处理响应
    defer resp.Body.Close()
}
Salin selepas log masuk

Amalan Terbaik

Dalam pembangunan sebenar, kita perlu menetapkan tamat masa permintaan mengikut senario dan keperluan tertentu. Berikut ialah contoh kod untuk beberapa amalan terbaik:

  1. Tetapkan tamat masa lalai global

Anda boleh menetapkan tamat masa lalai global untuk semua permintaan sepanjang aplikasi anda. Ini meningkatkan kebolehbacaan dan kebolehselenggaraan kod. Contohnya adalah seperti berikut:

package main

import (
    "net/http"
    "time"
)

var client = &http.Client{
    Transport: &http.Transport{
        // 设置全局默认超时时间为10秒
        Timeout: 10 * time.Second,
    },
}

func main() {
    resp, err := client.Get("http://example.com")
    if err != nil {
        // 处理错误
        return
    }

    // 处理响应
    defer resp.Body.Close()
}
Salin selepas log masuk
  1. Tetapkan tamat masa yang berbeza

Untuk permintaan yang berbeza, anda boleh menetapkan tamat masa yang berbeza. Sebagai contoh, untuk antara muka API yang berbeza, tamat masa boleh ditetapkan mengikut ciri antara muka dan keperluan masa tindak balas. Contohnya adalah seperti berikut:

package main

import (
    "net/http"
    "time"
)

func main() {
    apiA := &http.Client{
        Transport: &http.Transport{
            // 设置API A的超时时间为3秒
            Timeout: 3 * time.Second,
        },
    }

    apiB := &http.Client{
        Transport: &http.Transport{
            // 设置API B的超时时间为5秒
            Timeout: 5 * time.Second,
        },
    }

    respA, err := apiA.Get("http://apiA.example.com")
    if err != nil {
        // 处理错误
        return
    }

    respB, err := apiB.Get("http://apiB.example.com")
    if err != nil {
        // 处理错误
        return
    }

    // 处理响应
    defer respA.Body.Close()
    defer respB.Body.Close()
}
Salin selepas log masuk

Ringkasan

Artikel ini memperkenalkan cara untuk menetapkan tamat masa permintaan http.Transport dalam bahasa Go dan memberikan beberapa kod contoh amalan terbaik. Dalam pembangunan sebenar, menetapkan tamat masa permintaan secara fleksibel mengikut keperluan dan senario tertentu boleh meningkatkan prestasi dan kebolehpercayaan aplikasi.

Atas ialah kandungan terperinci Minta tetapan tamat masa dan amalan terbaik untuk http.Transport 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