go - 如何在 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))
}()
但是第一次成功重启,从第二次开始,它没有重新启动。有没有其他方法可以重新启动或者我在这里做错了什么?
解决方案
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.
推荐阅读
- reactjs - 从字符串输入计算上个月 (React)
- excel - 在 TEXTJOIN 公式中寻找 IF 函数字符限制的解决方法
- python - 在 mac 上的 python 3.8.5 上导入 KafkaProducer 时,self.async 出现 SyntaxError
- reactjs - amp 表单未提交表单数据
- android - 线圈不适用于 Android 4.4 中的大图像
- linear-programming - 有没有办法在 SCIP 中设置分支和绑定的时间限制?
- python - 有没有办法确定一个 for 循环是否完成了迭代?
- javascript - - "const { name } = require('something')" & "const name = require(something)()" 是什么意思?
- javascript - 从 php 验证返回后,如何在页面加载时抛出表单错误?
- reactjs - 如何将延迟加载应用于 react-router-dom?