download:Go微服务入门到容器化实践,落地可观测的微服务电商项目内附文档源码
解析 Golang 定时任务库 gron 设计和原理
简单说,每一个位都代表了一个时间维度,* 代表全集,所以,上面的语义是:在每天早上的4点05分触发任务。
但 cron 毕竟只是一个操作系统级别的工具,假如定时任务失败了,或者压根没启动,cron 是没法提示开发者这一点的。并且,cron 和 正则表达式都有一种魔力,不晓得大家能否感同身受,这里援用同事的一句名言:
这世界上有些言语十分类似: shell脚本, es查询的那个dsl言语, 定时任务的crontab, 正则表达式. 他们类似就类似在每次要写的时分根本都得重新现学一遍。
正巧,最近看到了 gron 这个开源项目,它是用 Golang 完成一个并发平安的定时任务库。完成十分简单精巧,代码量也不多。今天我们就来一同分离源码看一下,怎样基于 Golang 的才能做出来一个【定时任务库】。
Gron provides a clear syntax for writing and deploying cron jobs.
gron 是一个泰国小哥在 2016 年开源的作品,它的特性就在于十分简单和明晰的语义来定义【定时任务】,你不用再去记 cron 的语法。我们来看下作为运用者怎样上手。
首先,我们还是一个 go get 装置依赖:
$ go get github.com/roylee0704/gron
复制代码
假定我们希冀在【机遇】到了以后,要做的工作是打印一个字符串,每一个小时执行一次,我们就能够这样:
package main
import (
"fmt"
"time"
"github.com/roylee0704/gron"
)
func main() {
c := gron.New()
c.AddFunc(gron.Every(1*time.Hour), func() {
fmt.Println("runs every hour.")
})
c.Start()
}
相关文章
暂无评论...