package main
import (
"fmt"
"net/http"
"time"
)
func main() {
// 创建一个定时器,每隔1秒钟执行一次
ticker := time.NewTicker(1 * time.Second)
done := make(chan bool)
//设置3s超时,避免请求时间过长
client := http.Client{
Timeout: 3 * time.Second,
}
go func() {
for {
select {
case <-done:
// 定时任务结束
return
case <-ticker.C:
//请求url,www.baidu.com
resp, _ := client.Get("https://www.baidu.com")
//关闭请求
defer resp.Body.Close()
//打印状态码
fmt.Println(resp.StatusCode)
fmt.Println("定时任务执行中...")
}
}
}()
//select {} 语句会阻塞主线程,等待一个永远不会到来的信号。程序会一直运行,直到手动停止
select {}
// 等待5秒钟后停止定时任务
time.Sleep(5 * time.Second)
// 停止定时器
ticker.Stop()
// 发送停止信号
done <- true
fmt.Println("定时任务已停止")
}
想5秒内结束就注释掉select{}文章来源:https://www.toymoban.com/news/detail-852712.html
在linux上后台执行的话,可以这样文章来源地址https://www.toymoban.com/news/detail-852712.html
nohup go run channel.go &
到了这里,关于go 利用channel实现定时任务的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!