第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

在 Go 中測量反向代理響應(yīng)時(shí)間

在 Go 中測量反向代理響應(yīng)時(shí)間

Go
躍然一笑 2022-10-24 09:54:37
我有一個(gè)基于 http/net 的網(wǎng)絡(luò)反向代理。我正在使用 NewSingleHostReverseProxy 函數(shù)。如何測量目標(biāo) Web 服務(wù)器的響應(yīng)時(shí)間?
查看完整描述

1 回答

?
largeQ

TA貢獻(xiàn)2039條經(jīng)驗(yàn) 獲得超8個(gè)贊

你可以做這樣的事情。proxy.Transport用另一個(gè)實(shí)現(xiàn)來包裝http.RoundtripperRoundTrip 響應(yīng)所需的時(shí)間。


我認(rèn)為這通常會(huì)向您顯示“響應(yīng)時(shí)間”。不是“請(qǐng)求時(shí)間”,因?yàn)槿匀豢梢詮捻憫?yīng)中讀取正文,因此請(qǐng)求可能仍在進(jìn)行中,但這應(yīng)該大致顯示服務(wù)器響應(yīng)請(qǐng)求所需的時(shí)間。


package main


import (

    "fmt"

    "net/http"

    "net/http/httputil"

    "net/url"

    "time"

)


func main() {

    url, _ := url.Parse("https://stackoverflow.com")

    proxy := httputil.NewSingleHostReverseProxy(url)

    proxy.Transport = NewTimingRoundtripper(http.DefaultTransport)

}


type TimingRoundtripper struct {

    transport http.RoundTripper

}


func NewTimingRoundtripper(transport http.RoundTripper) http.RoundTripper {

    return TimingRoundtripper{transport: transport}

}


func (rt TimingRoundtripper) RoundTrip(r *http.Request) (resp *http.Response, err error) {

    start := time.Now()

    resp, err = rt.transport.RoundTrip(r)

    fmt.Println("request", r.URL, time.Since(start))

    return resp, err

}

如果您想傳遞一個(gè)自定義*tls.Config(如下所示),您可以創(chuàng)建一個(gè)具有與相同參數(shù)http.DefaultTransport但具有自定義的新傳輸*tls.Config。


    var myTransport http.RoundTripper = &http.Transport{

        Proxy: http.ProxyFromEnvironment,

        DialContext: (&net.Dialer{

            Timeout:   30 * time.Second,

            KeepAlive: 30 * time.Second,

        }).DialContext,

        ForceAttemptHTTP2:     true,

        MaxIdleConns:          100,

        IdleConnTimeout:       90 * time.Second,

        TLSHandshakeTimeout:   10 * time.Second,

        ExpectContinueTimeout: 1 * time.Second,

        TLSClientConfig:       &tls.Config{InsecureSkipVerify: true},

    }

然后像這樣初始化:


proxy.Transport = NewTimingRoundtripper(myTransport)


查看完整回答
反對(duì) 回復(fù) 2022-10-24
  • 1 回答
  • 0 關(guān)注
  • 128 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)