首先,我將描述我的情況。我必須從我的應(yīng)用程序向多個(gè) API 發(fā)出 HTTPS 請求,并且它們應(yīng)該同時(shí)運(yùn)行。我想知道我是否應(yīng)該為每個(gè) goroutine 使用一個(gè)單獨(dú)的 HTTP 客戶端,或者我可以在所有 goroutine 之間共享一個(gè)客戶端。當(dāng)然,我想享受 HTTP 客戶端提供的連接重用/池化,但我擔(dān)心它是線程(又名 goroutine)安全的,并且客戶端是否會并發(fā)運(yùn)行請求,或者它們實(shí)際上會被排序?
2 回答

揚(yáng)帆大魚
TA貢獻(xiàn)1799條經(jīng)驗(yàn) 獲得超9個(gè)贊
根據(jù)文檔(https://golang.org/src/net/http/client.go),Http 客戶端是線程安全的:
客戶端對于多個(gè) goroutine 并發(fā)使用是安全的。

撒科打諢
TA貢獻(xiàn)1934條經(jīng)驗(yàn) 獲得超2個(gè)贊
另一個(gè)問題是您應(yīng)該使用一個(gè)客戶端還是每個(gè)請求一個(gè)客戶端。您應(yīng)該按照https://pkg.go.dev/net/http#pkg-overview使用一個(gè)客戶端
“客戶端和傳輸對于多個(gè) goroutine 并發(fā)使用是安全的,并且為了提高效率應(yīng)該只創(chuàng)建一次并重復(fù)使用”
- 2 回答
- 0 關(guān)注
- 202 瀏覽
添加回答
舉報(bào)
0/150
提交
取消