周刊维护在:https://github.com/eryajf/learning-weekly (opens new window) 欢迎投稿,推荐或自荐项目 /文章 /博客,请提交 issue 。
周刊核心为运维周刊,还会侧重 Go 语言生态,Vue 相关技术生态的项目,以及 GitHub 上优秀项目或经验。
你也可以在我的博客 (opens new window) 查看汇总周刊。
🔥 有不少人想单独从博客通过 RSS 订阅周刊的更新,现在它来了,你可以使用这个🔗 链接 (opens new window)进行订阅。

项目说明:顾名思义,一个支持在 go 中实现重试的库。
eg:
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
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50


申明
原创文章eryajf,未经授权,严禁转载,侵权必究!此乃文中随机水印,敬请读者谅解。
includes()方法,并且过滤的还是其他数据类型,则需要注意得把数据类型转换之后方可正常使用。周刊维护在:https://github.com/eryajf/learning-weekly (opens new window) 欢迎投稿,推荐或自荐项目 /文章 /博客,请提交 issue 。
周刊核心为运维周刊,还会侧重 Go 语言生态,Vue 相关技术生态的项目,以及 GitHub 上优秀项目或经验。
你也可以在我的博客 (opens new window) 查看汇总周刊。
🔥 有不少人想单独从博客通过 RSS 订阅周刊的更新,现在它来了,你可以使用这个🔗 链接 (opens new window)进行订阅。

项目说明:顾名思义,一个支持在 go 中实现重试的库。
eg:
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
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50


申明
原创文章eryajf,未经授权,严禁转载,侵权必究!此乃文中随机水印,敬请读者谅解。
includes()方法,并且过滤的还是其他数据类型,则需要注意得把数据类型转换之后方可正常使用。