go corn定时任务简单应用

本文介绍了如何在Go中使用github.com/robfig/cron库来创建定时任务。通过示例代码展示了如何设置cron表达式,例如每分钟执行一次任务。还提到了cron表达式的各种匹配符号,如星号、斜线、逗号和连字号,以及预定义的模式,如@every1h用于每小时执行一次。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在写一些服务的时候,我们可能会需要定时执行一些方法,这时候就需要用到定时任务了;所以最近学了学corn,使用方法还是很容易的

导包

go get -v -u github.com/robfig/cron #第三方拉取

简单例子

package main

import (
	"fmt"
	"github.com/robfig/cron"
	"log"
)

func main() {
	log.Println("starting...")

	c := cron.New()

	if err := c.AddFunc("*/1 * * * * *", example); err != nil {
		fmt.Println(err)
	}
	c.Start()
	select { //查询语句,保持程序运行,在这里等同于for{}
	}
}

func example() {
	log.Println("Hello World!")
}

AddFunc后的符号

//* * * * * *
// 第一个 second (0 - 60)
// 第二个 min (0 - 59)
// 第三个 hour (0 - 23)
// 第四个 day of month (1 - 31)
// 第五个 month (1 - 12)
// 第六个 day of week (0 - 6) (0 to 6 are Sunday to Saturday)

匹配符号

//星号(*) :表示 cron 表达式能匹配该字段的所有值。如在第5个字段使用星号(month),表示每个月
//斜线(/):表示增长间隔,如第2个字段(minutes) 值是 3-59/15,表示每小时的第3分钟开始执行一次,之后 每隔 15 分钟执行一次(即 3(3+0*15)、18(3+1*15)、33(3+2*15)、48(3+3*15) 这些时间点执行),这里也可以表示为:3/15
//逗号(,):用于枚举值,如第6个字段值是 MON,WED,FRI,表示 星期一、三、五 执行
//连字号(-):表示一个范围,如第3个字段的值为 9-17 表示 9am 到 5pm 直接每个小时(包括9和17)
//问号(?):只用于 日(Day of month) 和 星期(Day of week),表示不指定值,可以用于代替 *

github.com/robfig/cron 包还给我门提供了一些预定义的模式:

入口描述等价于
@yearly (or @annually)每年一次,一月一日午夜0 0 0 1 1 *
@monthly每月运行一次,每月第一天午夜0 0 0 1 * *
@weekly每周运行一次,周六/周日午夜0 0 0 * * 0
@daily (or @midnight)每天运行一次,当天午夜0 0 0 * * *
@hourly每小时的开始运行一次0 0 * * * *
@every 每个持续的时间

例子

c.AddFunc("@every 1h", func() { })
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值