首页 > 解决方案 > 如何在 golang 应用程序中重新启动 heroku 服务器?

问题描述

我正在尝试有条件地重新启动 heroku 服务器。所以我写了以下代码来重新启动heroku服务器

go func() {
            time.Sleep(10 * time.Second)

            cmd := exec.Command("heroku", "restart")
            b, err := cmd.CombinedOutput()
            if err != nil {
                log.Fatalf("\n======> error restarting server: %v", err)
            }
            fmt.Printf("\n======>  server restart response : %s", string(b))
        }()

但是第一次成功重启,从第二次开始,它没有重新启动。有没有其他方法可以重新启动或者我在这里做错了什么?

标签: goheroku

解决方案


go func() {
    t := time.NewTicker(time.Second * 10)

    for range t.C{
        cmd := exec.Command("sh", "-c","heroku restart")
        var outb, errb bytes.Buffer
        cmd.Stdout = &outb
        cmd.Stderr = &errb
        err := cmd.Run()
        if err != nil {
            log.Fatalf("\n======> error restarting server: %v", err)
        }
        fmt.Printf("\n======>  server restart response : %s, %s", outb.String(), errb.String())
    }
}()

检查https://golang.org/pkg/time/#NewTicker

NewTicker returns a new Ticker containing a channel that will send the time with a period specified by the duration argument. It adjusts the intervals or drops ticks to make up for slow receivers. The duration d must be greater than zero; if not, NewTicker will panic. Stop the ticker to release associated resources.


推荐阅读