golang的定时任务
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 | * / , – ? |
注:
- 月(Month)和星期(Day of week)字段的值不区分大小写,如:SUN、Sun 和 sun 是一样的。
- 星期 (Day of week)字段如果没提供,相当于是 *
特殊字符说明
星号(*) 表示 cron 表达式能匹配该字段的所有值。如在第5个字段使用星号(month),表示每个月
斜线(/) 表示增长间隔,如第1个字段(minutes) 值是 3-59/15,表示每小时的第3分钟开始执行一次,之后每隔 15 分钟执行一次(即 3、18、33、48 这些时间点执行),这里也可以表示为:3/15
逗号(,) 用于枚举值,如第6个字段值是 MON,WED,FRI,表示 星期一、三、五 执行
连字号(-) 表示一个范围,如第3个字段的值为 9-17 表示 9am 到 5pm 直接每个小时(包括9和17)
问号(?) 只用于日(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的定时任务相关推荐
- golang+数据库定时任务
2019独角兽企业重金招聘Python工程师标准>>> golang+数据库定时任务 项目背景大致如下,楼主在用nodejs写项目时遇到一些需要定时去处理的事情,例如僵尸用户定时清除 ...
- Golang 定时任务 github/robfig/cron/v3 使用与源码解析
Cron 源码阅读 robfig/cron/v3 是一个 Golang 的定时任务库,支持 cron 表达式.Cron 的源码真实教科书级别的存在(可能是我菜 -),真的把低耦合高内聚体现地淋漓尽致, ...
- go定时读取mysql_golang+数据库定时任务
golang+数据库定时任务 项目背景大致如下,楼主在用nodejs写项目时遇到一些需要定时去处理的事情,例如僵尸用户定时清除,一些产品定时下架,邮件定时发送等等! 期初使用nodejs setTim ...
- Golang-常用第三方库
Golang_学习笔记 goleak--Goroutine 泄漏防治神器 Golang 命令行工具--urfave/cli 用法 Flag 参考文档 Golang处理Excel 微服务 请求路由-mu ...
- golang定时任务的使用
golang定时任务的使用 由于 golang 标准库内没有比较好的定时任务包,所以这里将使用一个第三方的 cron 包,由于此包存在一些不适用的地方,所以对此做了一些简单封装. cron简介 rob ...
- golang 定时任务方面time.Sleep和time.Tick的优劣对比
目录 golang 写循环执行的定时任务,常见的有以下三种实现方式: 这三种定时器的实现原理 优劣性对比,使用建议 golang 写循环执行的定时任务,常见的有以下三种实现方式: 1.time.Sle ...
- Golang 基础案例集合:中文拼音转换、解析二维码、压缩 zip、执行定时任务
前言 曾经,因为不够注重基础吃了好多亏.总是很喜欢去看那些高大上的东西,却忽略了最基本的东西.然后会错误的以为自己懂的很多,但是其实是沙堆中筑高台,知道很多高大上的架构,但是基础的东西却不太了解.我觉 ...
- Golang:gocron定时任务管理系统的安装与使用
简介 gocron是一个使用Go语言开发的轻量级定时任务集中调度和管理系统, 用于替代Linux-crontab 文档 https://github.com/ouqiang/gocron 目录 1.下 ...
- golang context 父子任务同步取消信号 协程调度 简介
目录 前言 为什么需要context context是什么 context的使用 总结 前言 这篇文章将介绍Golang并发编程中常用到一种编程模式:context.本文将从为什么需要context出 ...
最新文章
- 黑盒测试方法之等价类划分法
- 时间序列、时间序列分析、时间序列效应分解、平稳时间序列、AIC和BIC
- 【项目实战课】NLP入门第1课,人人免费可学,基于TextCNN的新闻文本分类实战...
- 2019年4月8日 1021. Remove Outermost Parentheses
- mysql oracle mvcc_PostgreSQL、Oracle/MySQL和SQL Server的MVCC实现原理方式
- (转)从零实现3D图像引擎:(5)3D坐标系函数库
- Strtus2标签s:url
- Android进阶2之oauth认证中UC无法跳转的问题
- php 安装scws,SCWS分词扩展在windows下的安装方法
- 计算机软考高级论文怎么写,【干货】软考高级论文怎么写易得高分?
- 银行家算法和安全性算法笔记
- GTA5最新线上小助手
- 2022 年中回顾|一文看懂预训练模型最新进展
- android打开app白色页面,完美解决Android App启动页有白屏闪过的问题
- Win10安装Linux子系统教程
- 微博社交圈子挖掘所面临的困难
- SonicWALL如何配置BGP
- 操作系统Unix、Windows、Mac OS、Linux的故事 科普篇
- ggplot2箱式图两两比较_R语言ggplot2箱线图绘图总结
- 下载安装MicroStrategy 完整版
热门文章
- Educational Codeforces Round 10 B. z-sort
- _itemmod_description
- 机器学习实战 k-近邻算法 约会网站
- Atitit 我们的devops战略与规划 规范 推荐标准
- 软件GUI测试中的关注点
- (二)OpenCV Mat常用属性和方法
- 百度地图标点点击变色_原神wiki地图工具,原神全地图资源标记全览
- 安徽省级办公室高级应用计算机二级,2019年9月安徽省计算机等级二级考试教程:二级MSOffice高级应用上机指导...
- c语言中什么函数可以作为虚函数,C++语言中的“虚函数”就像C语言中的指针,必须要弄懂的...
- mysql 临时表 中文_MySQL 临时表