golang的定时任务使用的是cron这个包来解决的

官方文档地址:https://godoc.org/github.com/robfig/cron

cron包的基础知识
字段名 是否必须 允许的值 允许的特定字符
秒(Seconds) 0-59 * / , -
分(Minutes) 0-59 * / , -
时(Hours) 0-23 * / , -
日(Day of month) 1-31 * / , – ?
月(Month) 1-12 * / , -
星期(Day of week) 0-6 or SUM-SAT * / , – ?

注:

  1. 月(Month)和星期(Day of week)字段的值不区分大小写,如:SUN、Sun 和 sun 是一样的。
  2. 星期 (Day of week)字段如果没提供,相当于是 *

特殊字符说明

  1. 星号(*) 表示 cron 表达式能匹配该字段的所有值。如在第5个字段使用星号(month),表示每个月

  2. 斜线(/) 表示增长间隔,如第1个字段(minutes) 值是 3-59/15,表示每小时的第3分钟开始执行一次,之后每隔 15 分钟执行一次(即 3、18、33、48 这些时间点执行),这里也可以表示为:3/15

  3. 逗号(,) 用于枚举值,如第6个字段值是 MON,WED,FRI,表示 星期一、三、五 执行

  4. 连字号(-) 表示一个范围,如第3个字段的值为 9-17 表示 9am 到 5pm 直接每个小时(包括9和17)

  5. 问号(?) 只用于日(Day of month)和星期(Day of week),\表示不指定值,可以用于代替 *

cron举例说明

每隔5秒执行一次:*/5 * * * * ?

每隔1分钟执行一次:0 */1 * * * ?

每天23点执行一次:0 0 23 * * ?

每天凌晨1点执行一次:0 0 1 * * ?

每月1号凌晨1点执行一次:0 0 1 1 * ?

在26分、29分、33分执行一次:0 26,29,33 * * * ?

每天的0点、13点、18点、21点都执行一次:0 0 0,13,18,21 * * ?

实例代码:

package mainimport ("github.com/robfig/cron""log"
)func main() {i := 0c := cron.New()spec := "*/5 * * * * ?"c.AddFunc(spec, func() {i++log.Println("cron running :", i)})c.Start()select {}
}

这里的select是相当于死循环的意义,如果不写,程序会立刻退出,写for死循环也是可以的

多任务

package mainimport ("fmt""github.com/robfig/cron""log"
)type TestJob struct {
}func (this TestJob) Run() {fmt.Println("testJob1")
}type Test2Job struct {
}func (this Test2Job) Run() {fmt.Println("testJob2")
}func main() {i := 0c := cron.New()spec := "*/5 * * * * ?"c.AddFunc(spec, func() {i++log.Println("cron running :", i)})c.AddJob(spec, TestJob{})c.AddJob(spec, Test2Job{})c.Start()defer c.Stop()select {}
}

转载于:https://www.cnblogs.com/TimLiuDream/p/9918101.html

golang的定时任务相关推荐

  1. golang+数据库定时任务

    2019独角兽企业重金招聘Python工程师标准>>> golang+数据库定时任务 项目背景大致如下,楼主在用nodejs写项目时遇到一些需要定时去处理的事情,例如僵尸用户定时清除 ...

  2. Golang 定时任务 github/robfig/cron/v3 使用与源码解析

    Cron 源码阅读 robfig/cron/v3 是一个 Golang 的定时任务库,支持 cron 表达式.Cron 的源码真实教科书级别的存在(可能是我菜 -),真的把低耦合高内聚体现地淋漓尽致, ...

  3. go定时读取mysql_golang+数据库定时任务

    golang+数据库定时任务 项目背景大致如下,楼主在用nodejs写项目时遇到一些需要定时去处理的事情,例如僵尸用户定时清除,一些产品定时下架,邮件定时发送等等! 期初使用nodejs setTim ...

  4. Golang-常用第三方库

    Golang_学习笔记 goleak--Goroutine 泄漏防治神器 Golang 命令行工具--urfave/cli 用法 Flag 参考文档 Golang处理Excel 微服务 请求路由-mu ...

  5. golang定时任务的使用

    golang定时任务的使用 由于 golang 标准库内没有比较好的定时任务包,所以这里将使用一个第三方的 cron 包,由于此包存在一些不适用的地方,所以对此做了一些简单封装. cron简介 rob ...

  6. golang 定时任务方面time.Sleep和time.Tick的优劣对比

    目录 golang 写循环执行的定时任务,常见的有以下三种实现方式: 这三种定时器的实现原理 优劣性对比,使用建议 golang 写循环执行的定时任务,常见的有以下三种实现方式: 1.time.Sle ...

  7. Golang 基础案例集合:中文拼音转换、解析二维码、压缩 zip、执行定时任务

    前言 曾经,因为不够注重基础吃了好多亏.总是很喜欢去看那些高大上的东西,却忽略了最基本的东西.然后会错误的以为自己懂的很多,但是其实是沙堆中筑高台,知道很多高大上的架构,但是基础的东西却不太了解.我觉 ...

  8. Golang:gocron定时任务管理系统的安装与使用

    简介 gocron是一个使用Go语言开发的轻量级定时任务集中调度和管理系统, 用于替代Linux-crontab 文档 https://github.com/ouqiang/gocron 目录 1.下 ...

  9. golang context 父子任务同步取消信号 协程调度 简介

    目录 前言 为什么需要context context是什么 context的使用 总结 前言 这篇文章将介绍Golang并发编程中常用到一种编程模式:context.本文将从为什么需要context出 ...

最新文章

  1. 黑盒测试方法之等价类划分法
  2. 时间序列、时间序列分析、时间序列效应分解、平稳时间序列、AIC和BIC
  3. 【项目实战课】NLP入门第1课,人人免费可学,基于TextCNN的新闻文本分类实战...
  4. 2019年4月8日 1021. Remove Outermost Parentheses
  5. mysql oracle mvcc_PostgreSQL、Oracle/MySQL和SQL Server的MVCC实现原理方式
  6. (转)从零实现3D图像引擎:(5)3D坐标系函数库
  7. Strtus2标签s:url
  8. Android进阶2之oauth认证中UC无法跳转的问题
  9. php 安装scws,SCWS分词扩展在windows下的安装方法
  10. 计算机软考高级论文怎么写,【干货】软考高级论文怎么写易得高分?
  11. 银行家算法和安全性算法笔记
  12. GTA5最新线上小助手
  13. 2022 年中回顾|一文看懂预训练模型最新进展
  14. android打开app白色页面,完美解决Android App启动页有白屏闪过的问题
  15. Win10安装Linux子系统教程
  16. 微博社交圈子挖掘所面临的困难
  17. SonicWALL如何配置BGP
  18. 操作系统Unix、Windows、Mac OS、Linux的故事 科普篇
  19. ggplot2箱式图两两比较_R语言ggplot2箱线图绘图总结
  20. 下载安装MicroStrategy 完整版

热门文章

  1. Educational Codeforces Round 10 B. z-sort
  2. _itemmod_description
  3. 机器学习实战 k-近邻算法 约会网站
  4. Atitit 我们的devops战略与规划 规范 推荐标准
  5. 软件GUI测试中的关注点
  6. (二)OpenCV Mat常用属性和方法
  7. 百度地图标点点击变色_原神wiki地图工具,原神全地图资源标记全览
  8. 安徽省级办公室高级应用计算机二级,2019年9月安徽省计算机等级二级考试教程:二级MSOffice高级应用上机指导...
  9. c语言中什么函数可以作为虚函数,C++语言中的“虚函数”就像C语言中的指针,必须要弄懂的...
  10. mysql 临时表 中文_MySQL 临时表