網(wǎng)站首頁 編程語言 正文
開發(fā)中對(duì)于http請(qǐng)求是經(jīng)常遇到,一般可能網(wǎng)絡(luò)延遲或接口返回超時(shí),對(duì)于發(fā)起客戶端的請(qǐng)求,除了設(shè)置超時(shí)時(shí)間外,請(qǐng)求重試是很有必要考慮的,我們不用重復(fù)造輪子,可以使用https://github.com/rafaeljesus/retry-go第三方庫,retry-go的使用非常簡單,如下是一個(gè)發(fā)起 HTTP Get 請(qǐng)求的重試示例 :
package main import ( "io/ioutil" "log" "net/http" "time" "github.com/rafaeljesus/retry-go" ) var ( attempts = 3 //最大重試次數(shù) sleepTime = time.Second * 2 //重試延遲時(shí)間 ) func main() { _, err := retry.DoHTTP(func() (*http.Response, error) { return makeRequest() }, attempts, sleepTime) if err != nil { log.Print("retry.DoHTTP Failed") return } log.Print("retry.DoHTTP OK") } // 發(fā)送http請(qǐng)求 func makeRequest() (*http.Response, error) { client := http.Client{ Timeout: 2 * time.Second, // 設(shè)置請(qǐng)求超時(shí)時(shí)間 } req, err := client.Get("https://www.baidu2.com") // 模擬不存在的url請(qǐng)求 if err != nil { log.Printf(err.Error()) return nil, err } body, err := ioutil.ReadAll(req.Body) if err != nil { log.Printf(err.Error()) return nil, err } log.Printf("響應(yīng)數(shù)據(jù) %v\\n", string(body)) defer req.Body.Close() res := &http.Response{} return res, nil }
運(yùn)行結(jié)果:
我們看到嘗試執(zhí)行了指定的3次請(qǐng)求次數(shù)。
原文鏈接:https://www.cnblogs.com/phpper/archive/2022/08/30/16639934.html
相關(guān)推薦
- 2022-01-21 什么是前端開發(fā)?什么是后端開發(fā)?
- 2023-01-17 C#實(shí)現(xiàn)自定義ListBox背景的示例詳解_C#教程
- 2022-08-05 C#實(shí)現(xiàn)圖形界面的時(shí)鐘_C#教程
- 2022-03-30 一篇文章帶你了解C語言的選擇結(jié)構(gòu)_C 語言
- 2022-09-08 Python報(bào)錯(cuò)SyntaxError:unexpected?EOF?while?parsing的解
- 2023-01-17 pytest內(nèi)置fixture使用臨時(shí)目錄流程詳解_python
- 2022-06-21 Android?Studio實(shí)現(xiàn)登錄界面功能_Android
- 2021-12-02 Android創(chuàng)建淡入淡出動(dòng)畫的詳解_Android
- 最近更新
-
- window11 系統(tǒng)安裝 yarn
- 超詳細(xì)win安裝深度學(xué)習(xí)環(huán)境2025年最新版(
- Linux 中運(yùn)行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲(chǔ)小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎(chǔ)操作-- 運(yùn)算符,流程控制 Flo
- 1. Int 和Integer 的區(qū)別,Jav
- spring @retryable不生效的一種
- Spring Security之認(rèn)證信息的處理
- Spring Security之認(rèn)證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權(quán)
- redisson分布式鎖中waittime的設(shè)
- maven:解決release錯(cuò)誤:Artif
- restTemplate使用總結(jié)
- Spring Security之安全異常處理
- MybatisPlus優(yōu)雅實(shí)現(xiàn)加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務(wù)發(fā)現(xiàn)-Nac
- Spring Security之基于HttpR
- Redis 底層數(shù)據(jù)結(jié)構(gòu)-簡單動(dòng)態(tài)字符串(SD
- arthas操作spring被代理目標(biāo)對(duì)象命令
- Spring中的單例模式應(yīng)用詳解
- 聊聊消息隊(duì)列,發(fā)送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠(yuǎn)程分支