# 0 ,前言

周刊维护在:https://github.com/eryajf/learning-weekly (opens new window) 欢迎投稿,推荐或自荐项目 /文章 /博客,请提交 issue 。

周刊核心为运维周刊,还会侧重 Go 语言生态,Vue 相关技术生态的项目,以及 GitHub 上优秀项目或经验。

你也可以在我的博客 (opens new window) 查看汇总周刊。

🔥 有不少人想单独从博客通过 RSS 订阅周刊的更新,现在它来了,你可以使用这个🔗 链接 (opens new window)进行订阅。

# 1,优秀项目




  • 项目地址:retry-go (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

  • 相关文章:README (opens new window)





申明

原创文章eryajf,未经授权,严禁转载,侵权必究!此乃文中随机水印,敬请读者谅解。

# 2,优秀文章






# 3,优秀博客