golang-定时任务cron


前言

服务器开发的过程中,经常遇到需要设置定时任务的情况。本文将探讨使用golang的cron包设置定时任务,你将收获cron表达式的使用,cron函数的使用,设置定时任务的场景

一、cron表达式

设定定时任务最重要的一环就是对定时的设置,cron中对定时的设置采取cron表达式
在线cron表达式生成器:https://cron.qqe2.com

cron表达式格式
在这里插入图片描述

二、设置定时重复任务

  • cron.New(cron.WithSeconds()):根据本地时间创建一个新的cron job runner,并支持秒级设置定时任务
  • AddFunc():设置操作函数,按照设置的定时时间进行执行
  • Start():启动cron调度程序
  • time.NewTimer():设置定时器,在到达特定时间后发出信号
  • time.Reset():重设定时器
func timerTest() {
	c := cron.New(cron.WithSeconds())
	c.AddFunc("* * * * * *", func() {
		fmt.Println("do something1")
	})
	c.AddFunc("* * * * * *", func() {
		fmt.Println("do something2")
	})
	c.Start()
	timer := time.NewTimer(time.Second * 5)

	//	循环等待
	for {
		select {
		case <-timer.C:
			timer.Reset(time.Second * 5)
		}
	}
}

三、多任务执行

设置定时器,每5s重复执行多个任务

  • select{}:选取一个case来执行后结束,如果没有case执行,将会阻塞主线程
type job1 struct {
}

func (t job1) run() {
	fmt.Println(time.Now(), "I am job1")
}

type job2 struct {
}

func (t job2) run() {
	fmt.Println(time.Now(), "I am job2")
}

// 多任务执行
func runCron() {
	c := cron.New(cron.WithSeconds())
	addFunc, err := c.AddFunc("*/5 * * * * *", job1{}.run)
	fmt.Println(time.Now(), addFunc, err)
	addFunc, err = c.AddFunc("*/5 * * * * *", job2{}.run)
	fmt.Println(time.Now(), addFunc, err)
	c.Start()
	select {}
}

总结

服务器中经常需要一些定时操作的任务,比如:每2小时获取一次token,否则token将会过期的场景。cron专门用于处理定时任务的设置,可以在服务器中尝试使用cron来设置定时任务

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值