http - http请求会自动重试吗?
问题描述
我正在尝试使用 GoLang 将我的数据推送到 apache 服务器。假设我的 apache 服务器暂时停止。然后我的http请求会自动重试。我正在使用这个语句
resp, err := http.DefaultClient.Do(req)
if err != nil {
return errors.Wrap(err, "http request error")
}
我无法继续进行,因为我认为我的执行被困在这里。而且我反复收到此错误。
解决方案
不,您需要实现自己的重试方法,这是一个基本示例,可以给您一个想法:
https://play.golang.org/p/_o5AgePDEXq
package main
import (
"fmt"
"io/ioutil"
"log"
"net/http"
)
func main() {
var (
err error
response *http.Response
retries int = 3
)
for retries > 0 {
response, err = http.Get("https://non-existent")
// response, err = http.Get("https://google.com/robots.txt")
if err != nil {
log.Println(err)
retries -= 1
} else {
break
}
}
if response != nil {
defer response.Body.Close()
data, err := ioutil.ReadAll(response.Body)
if err != nil {
log.Fatal(err)
}
fmt.Printf("data = %s\n", data)
}
}
推荐阅读
- php - PHP 检查它是否是一个有效的 HTML 属性
- react-native - 如何修复此错误 "combineReducers" 是只读的。在 react-native/react-redux 中
- jquery - 如何在 JQuery FancyTree 中部分选择节点?
- android - APK 文件可在 android 模拟器中运行,但无法安装在我的设备上
- scala - 确保扇入元素属于同一个扇出元素
- regex - 匹配 oracle regexp_like 中的行首
- java - 在 Keycloak 扩展档案中放置消息的位置
- java - 优化在数字中添加零填充
- c++ - C++不支持非成员虚函数的原因是什么
- vba - View.GoToDate 没有去日期