網站首頁 編程語言 正文
開發中對于http請求是經常遇到,一般可能網絡延遲或接口返回超時,對于發起客戶端的請求,除了設置超時時間外,請求重試是很有必要考慮的,我們不用重復造輪子,可以使用https://github.com/rafaeljesus/retry-go第三方庫,retry-go的使用非常簡單,如下是一個發起 HTTP Get 請求的重試示例 :
package main import ( "io/ioutil" "log" "net/http" "time" "github.com/rafaeljesus/retry-go" ) var ( attempts = 3 //最大重試次數 sleepTime = time.Second * 2 //重試延遲時間 ) 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") } // 發送http請求 func makeRequest() (*http.Response, error) { client := http.Client{ Timeout: 2 * time.Second, // 設置請求超時時間 } req, err := client.Get("https://www.baidu2.com") // 模擬不存在的url請求 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("響應數據 %v\\n", string(body)) defer req.Body.Close() res := &http.Response{} return res, nil }
運行結果:
我們看到嘗試執行了指定的3次請求次數。
原文鏈接:https://www.cnblogs.com/phpper/archive/2022/08/30/16639934.html
相關推薦
- 2022-06-07 Jenkins?腳本命令行應用小結_相關技巧
- 2022-12-07 聊聊C語言中sizeof運算符的一個陷阱_C 語言
- 2023-07-14 vite配置別名,并處理報錯:找不到模塊“xxx”或其相應的類型聲明
- 2022-05-26 簡單聊一聊SQL注入及防止SQL注入_數據庫其它
- 2022-10-14 Android適配器和適配器視圖
- 2023-09-12 Nginx安裝與常見命令
- 2022-05-19 pytorch中的?.view()函數的用法介紹_python
- 2022-10-12 C#設計模式之建造者模式生成器模式示例詳解_C#教程
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支