【golang学习之旅】Go中的cron定时任务

系列文章

【golang学习之旅】报错:a declared but not used
【golang学习之旅】Go 的基本数据类型
【golang学习之旅】深入理解字符串string数据类型
【golang学习之旅】go mod tidy
【golang学习之旅】记录一次 panic case : reflect: reflect.Value.SetInt using unaddressable value
【golang学习之旅】记录一次 error case : full error output: cc1: error: unrecognized command line option


目录


cron库

cron 是一个用Go实现的定时任务库,支持秒级定时任务,可以满足绝大多数工作场景需求。基本用法和Linux中的crontab类似

cron库分两个主要的版本,v1.2v3.0。二者在使用上有些区别:

  • v1.2版本默认支持精确到秒的cron表达式
  • v3版本默认不再是支持秒级别定时任务,而是从分钟域开始执行,要细化到秒级别时,必须携带cron.WithSeconds()参数
  • v3支持定时任务的撤销功能

用法与linux的crontab类似,不过多了个秒级别

go 复制代码
* * * * * * //依次是 秒 分 时 日 月 周

快速使用

  • 安装
go 复制代码
go get -u github.com/robfig/cron //1.2版本
go get github.com/robfig/cron/v3 //3.0版本

下面演示v3版本的简单用法:

  • 示例
go 复制代码
package main

import (
	"fmt"
	"github.com/robfig/cron/v3"
	"time"
)
func main() {
	// 开启秒字段支持
	c := cron.New(cron.WithSeconds()) //注意3.0版本不再默认支持秒级,所以这里初始化的时候要添加cron.WithSeconds()参数
	// 传统表达式写法: 每秒执行一次
	_, _ = c.AddFunc("0/1 * * * * *", func() {
		fmt.Println("传统表达式: ",time.Now().Format("2006-01-02 15:04:05"))
	})
	// 预定义表达式
	_,_ = c.AddFunc("@every 1s", func() {
		fmt.Println("预定义表达式: ",time.Now().Format("2006-01-02 15:04:05"))
	})
	// 启动
	c.Start()
	// 使程序无限阻塞
	select{}
  • 说明
    • 开启秒级级别支持情况下的写法:

    • 预定义模式(用于AddFunc()):


参考

http://liuqh.icu/2021/07/18/go/package/27-cron/
https://www.cnblogs.com/Xinenhui/p/16976562.html

相关推荐
无限的鲜花5 小时前
反射(原创推荐)
java·开发语言
yongche_shi5 小时前
ragas官方文档中文版(五十)
开发语言·python·ai·ragas·如何评估和改进 rag 应用
一路向北he5 小时前
字节钢铁军团--“提供情境,而非控制”
java·开发语言·前端
Waay6 小时前
面试口述版:个人对 Prometheus 完整理解
运维·学习·云原生·面试·职场和发展·kubernetes·prometheus
AI行业学习7 小时前
Notepad++ 官方下载 + 完整安装 + 全套优化配置(2026最新)
开发语言·人工智能·python·前端框架·html·notepad++
大圣编程7 小时前
Python中continue语句的用法是什么?
开发语言·前端·python
upgrador8 小时前
基础知识:C++ STL构造函数的左闭右开惯例及其实现原理
开发语言·c++
一楼的猫9 小时前
AI写作合规技术方案:平台检测机制分析与规避策略
人工智能·学习·机器学习·ai写作
yoothey9 小时前
报废审批流规则引擎设计——责任链模式完整实现
linux·开发语言·bash
geovindu9 小时前
python: Functional Options Pattern
开发语言·后端·python·设计模式·惯用法模式·函数式选项模式