首页 > 其他分享 >Go的定时器cron

Go的定时器cron

时间:2022-11-14 13:12:30浏览次数:66  
标签:定时器 fmt 30 分钟 cron func time Go

 
  • 1 cron 如果是V3版本,创建对象时如果定时任务粒度要细化到秒级别时,必须携带cron.WithSeconds()参数,V3版本默认不再是支持秒级别定时任务,默认时从分钟域开始执行!
import (
    "github.com/robfig/cron/v3"
    "fmt"
    "time"
)

func main() {
    c := cron.New(cron.WithSeconds())
    c.AddFunc("*/5 * * * * ?", func(){
        fmt.Println("xxx")
    })
    c.Start()
    defer c.Stop()
    for {
        time.Sleep(time.Second)
    }
}
  • 2 如果是老的版本cron,默认是支持秒级别粒度,不需要携带cron.WithSeconds()参数
import (
    "fmt"
    "github.com/robfig/cron"
    "time"
)

func main() {
    c := cron.New()
    c.AddFunc("*/1 * * * * ?", func() {
        fmt.Println("xxx")
    })
    go c.Start()
    defer c.Stop()
    for {
        time.Sleep(time.Second)
    }
}
  • 3 定时参数设定
    "/" ==> 指隔多久执行一次
    "," ==> 指用来列举一些离散的值和多个范围,例如将周历的域(第 6 个)设置为MON,WED,FRI表示周一、三和五
    "-" ==> 指时间间隔范围,比如:在分钟一栏,3-18表示3-18分钟之间,包括3分和18分。
    "?" ==> 问号表示每月/每周的任意一天,只能用在月和周的域中.
1  "0 0 0 * * *"  每天的 0点启动  * 通配符可以匹配任何数字
2  "*/5 * * * * *" 表示每隔5秒钟执行一次
3  "*/1 * * * *"  表示每隔1分钟执行一次,比秒级别解析器少了个*
4  "30 * * * *"  分钟域为 30,其他域都是*表示任意。每30分触发
5  "30 3-6,20-23 * * *":分钟域为 30,小时域的3-6,20-23表示 3 点到 6 点和 20 点到 23 点。每小时的30 分钟触发.
6  "0 0 0 * * ?"  表示每天0点执行一次
7  "0 0 1 1 * ?"  表示每月1号凌晨1点执行一次
8  "0 1,2,3 * * * ?" 表示在1分,2分,3分执行一次
9  "0 0 0,1,2 * * ?" 表示每天的0点,1点,2点执行一次
  • 4 如果解析器不指定秒级别粒度,V3默认时以分为粒度,时间参数会长短不一样,下面是5个参数,指定秒级就是6个参数!!!
func main() {
    c := cron.New() //自定义解析器
    c.AddFunc("*/1 * * * *", func() { //注意,这里,跟秒级别有差别
        fmt.Println("每隔1分钟", time.Now().Format("2006-01-02 15:04:05"))
    })
    // c.AddFunc()  可以同时进行多个定时任务.
    go c.Start()
    defer c.Stop()
    for {
        time.Sleep(time.Second)
    }
}


作者:are_you_ok_
链接:https://www.jianshu.com/p/12c9cb7dc013
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

标签:定时器,fmt,30,分钟,cron,func,time,Go
From: https://www.cnblogs.com/cheyunhua/p/16888711.html

相关文章

  • 巨蟒python全栈开发django9:一些知识点的汇总
    回顾上周内容:题目:1.人民出版社出版过的所有书籍的名字以及作者的姓名(三种写法,笔记中有两种写法)2.手机以2开头的作者出版过的所有书籍名称以及出版社名称(三种写法,笔记......
  • 巨蟒python全栈开发django3:url&&视图
    1.url正则匹配分组和命名分组2.路由分发3.url别名和反向解析4.httprequest和httpresponse的使用 内容回顾:1.jinja2(flask框架,没有内置模板对象,需要自己用jinja2)......
  • 巨蟒python全栈开发django2:初识django
    今日内容大纲:1.起飞版web框架2.自定制框架的流程3.jinja2模板渲染初识4.MVC&&MTV5.django版本介绍及django安装6.django初识(一些操作) 今日详细内容:1.起飞版web框架2.自......
  • 小程序报错:[渲染层网络层错误] Failed to load local image resource /static/logo.pn
    问题来源我在刚开发微信小程序时发现了一个问题,当我用hbuilderx运行小程序到微信开发者工具中时,出现了报错。报错后并且也出不来图片,当时也去百度了许多用法,发现大多数......
  • 巨蟒python全栈开发flask7 语音识别升级版&&mongoDB
    1.web简陋版玩具首先,复制上一节课的内容,将其中的语音文件删除掉,放入三个文件,然后,我们需要在app写入下面的内容下图是需要修改的地方:  Recorder_ok.js是一个web录音......
  • 巨蟒python全栈开发django8:基于对象和基于双下划线的多表查询
    1.编辑删除&&多对多关系的其他方法提交,数据,得到结果  查看运行给编辑和删除,添加样式我们点击删除,可以成功删除 打印sql语句的,在settings.py里边的配置 LOGGING={......
  • django传递数据到前端的js使用
     djang的view文件中importjsondefeg(request):data=[{'name':'通过','value':20},{'name':'jack','value':14}]returnrender(request,"html文件",......
  • Go语言的一些问题
    1.go运行错误expected'package',found'EOF'解决?只要将文件保存一下,再运行就ok了。2.问题如下:D:\goprojects>gobuildcan'tloadpackage:package.:noGofilesin......
  • MixGo CE主控板简单介绍
    MixGoCE主控板是一块集成了常见的声音、光线、温度等传感器和蜂鸣器、RGB灯、LED灯等执行器于一身的功能强大的集成式主控板,并且支持MixIO物联网应用开发平台,与Mixly最新......
  • 遇到的问题mongodb
    1.MongoNetworkError:failedtoconnecttoserver?数据库没有启动,启动mongo数据库就好2.有些东西真的是要做好记录的,单纯为了自己日后可以查阅比较方便也就可以要做3.时......