0


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():重设定时器
functimerTest(){
    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")}// 多任务执行funcrunCron(){
    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来设置定时任务


本文转载自: https://blog.csdn.net/qq_42931634/article/details/131218180
版权归原作者 所有不开心都是闲出来的 所有, 如有侵权,请联系我们删除。

“golang-定时任务cron”的评论:

还没有评论