网站首页 > 开源技术 正文
前面讲介绍了Go 语言的基础入门及Golang的语法结构。同时也介绍Golang的接口及协程等内容。感兴趣的朋友可以先看看之前的文章。接下来说一说Golang 如何实现定时任务。
golang 实现定时服务很简单,只需要简单几步代码便可以完成,不需要配置繁琐的服务器,直接在代码中实现。
1、使用的包
github.com/robfig/cron
2、示例
1、创建最简单的最简单cron任务
package main
import (
   "github.com/robfig/cron"
   "fmt"
)
func main() {
   i := 0
   c := cron.New()
   spec := "*/5 * * * * ?"
   c.AddFunc(spec, func() {
      i++
      fmt.Println("cron running:", i)
   })
   c.Start()
   select{}
}启动后输出如下:
D:\Go_Path\go\src\cronjob>go run multijob.go
cron running: 1
testJob1...
testJob2...
testJob1...
cron running: 2
testJob2...
testJob1...
testJob2...
cron running: 3
cron running: 4
testJob1...
testJob2...2、多个定时cron任务
package main
import (
    "github.com/robfig/cron"
    "fmt"
    )
type TestJob struct {
}
func (this TestJob)Run() {
    fmt.Println("testJob1...")
}
type Test2Job struct {
}
func (this Test2Job)Run() {
    fmt.Println("testJob2...")
}
//启动多个任务
func main() {
    i := 0
    c := cron.New()
    //AddFunc
    spec := "*/5 * * * * ?"
    c.AddFunc(spec, func() {
        i++
        fmt.Println("cron running:", i)
    })
    //AddJob方法
    c.AddJob(spec, TestJob{})
    c.AddJob(spec, Test2Job{})
    //启动计划任务
    c.Start()
    //关闭着计划任务, 但是不能关闭已经在执行中的任务.
    defer c.Stop()
    select{}
}启动后输出如下:
D:\Go_Path\go\src\cronjob>go run multijob.go
cron running: 1
testJob1...
testJob2...
testJob1...
cron running: 2
testJob2...
testJob1...
testJob2...
cron running: 3
cron running: 4
testJob1...
testJob2...3、cron 表达式
Go 实现的cron 表达式的基本语法跟linux 中的 crontab基本是类似的。cron(计划任务),就是按照约定的时间,定时的执行特定的任务(job)。cron 表达式 表达了这种约定。 cron 表达式代表了一个时间集合,使用 6 个空格分隔的字段表示。如果对cron 表达式不清楚的,可以看看我之前介绍quartz.net 的文章:《Quartz.NET总结(二)CronTrigger和Cron表达式 》。
4、最后
以上,就将Golang中如何创建定时任务做了简单介绍,实际使用中,大家可以可结合配置需要定时执行的任务。
推荐阅读:
Golang 入门系列(六)理解Go协程Goroutine,这篇就够了!
Golang 入门系列(四)Golang中的interface,一看就明白
Golang 入门系列(三)打好基本功: Golang 语法基础!
猜你喜欢
- 2024-10-26 浅谈Kubernetes CRD和Operator的原理和使用方法
 - 2024-10-26 笨办法学物联网之四:99个物联网动手实践项目
 - 2024-10-26 Linux入门常用必会60个命令实例详解(一)
 - 2024-10-26 Kubernetes任务调用Job与CronJob及源码分析
 - 2024-10-26 linux 常用cron检测脚本(linux查询crontab)
 - 2024-10-26 作业帮 K8s Serverless 虚拟节点大规模应用实践
 - 2024-10-26 火山引擎 Redis 云原生实践(火山引擎app)
 - 2024-10-26 当 GoLand 遇到 Kubernetes:如何调试和运行 Go 程序
 - 2024-10-26 Go 每日一库之 jobrunner(github每日一题)
 - 2024-10-26 golang cron 定时任务(go语言定时任务)
 
欢迎 你 发表评论:
- 1588℃北京那些看上去很牛的车牌们!(北京厉害车牌)
 - 1107℃2025年度视频去水印软件TOP5对比:哪款最值得用
 - 683℃《我的世界》不同版本的差异 ——新手向
 - 595℃新疆话里的“虫子”
 - 515℃中兴光猫 Telnet下设置大全(中兴光猫命令大全)
 - 513℃蓝牙设备配对失败的系统性解决方案与技术解析
 - 509℃未备份电脑文件数据恢复的七种方法
 - 488℃工艺管道常用英文缩写 英汉对照
 
- 最近发表
 
- 标签列表
 - 
- jdk (81)
 - putty (66)
 - rufus (78)
 - 内网穿透 (89)
 - okhttp (70)
 - powertoys (74)
 - windowsterminal (81)
 - netcat (65)
 - ghostscript (65)
 - veracrypt (65)
 - asp.netcore (70)
 - wrk (67)
 - aspose.words (80)
 - itk (80)
 - ajaxfileupload.js (66)
 - sqlhelper (67)
 - express.js (67)
 - phpmailer (67)
 - xjar (70)
 - redisclient (78)
 - wakeonlan (66)
 - tinygo (85)
 - startbbs (72)
 - webftp (82)
 - vsvim (79)
 
 

本文暂时没有评论,来添加一个吧(●'◡'●)