当前位置: 首页 > news >正文

【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库

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

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

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

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

* * * * * * //依次是 秒 分 时 日 月 周

快速使用

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

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

  • 示例
package mainimport ("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

相关文章:

  • 扩展 Kafka 集群从三台节点到四台节点的过程
  • C++结合OpenCV进行图像处理与分类
  • 植物大战僵尸杂交版2.0.88最新版安装包
  • 爬虫之反爬思路与解决手段
  • 记录一次jlink连不上cpu的情况
  • 洛谷 CF1969A Two Friends 题解
  • RAG 高效应用指南 :Query 理解
  • Java1.8全套家政上门服务+springboot+ mysql +Thymeleaf 技术架构开发,家政APP系统在线派单,师傅入驻全套商业源码
  • 【TB作品】 51单片机8x8点阵显示滚动汉字仿真
  • html+CSS+js部分基础运用15
  • C# 判断字符串不等于空的示例
  • AdminController
  • 【面试笔记】单片机软件工程师,工业控制方向(储能)
  • Windows下载安装RabbitMQ客户端(2024最新篇)
  • 【CMake系列】09-cmake install 一般文件 文件夹 源代码
  • 【140天】尚学堂高淇Java300集视频精华笔记(86-87)
  • 【翻译】Mashape是如何管理15000个API和微服务的(三)
  • classpath对获取配置文件的影响
  • FastReport在线报表设计器工作原理
  • Golang-长连接-状态推送
  • laravel5.5 视图共享数据
  • mysql外键的使用
  • 阿里云ubuntu14.04 Nginx反向代理Nodejs
  • 程序员最讨厌的9句话,你可有补充?
  • 初探 Vue 生命周期和钩子函数
  • 高程读书笔记 第六章 面向对象程序设计
  • 基于游标的分页接口实现
  • 全栈开发——Linux
  • 如何使用Mybatis第三方插件--PageHelper实现分页操作
  • 入门到放弃node系列之Hello Word篇
  • 扫描识别控件Dynamic Web TWAIN v12.2发布,改进SSL证书
  • 少走弯路,给Java 1~5 年程序员的建议
  • 视频flv转mp4最快的几种方法(就是不用格式工厂)
  • 数据库写操作弃用“SELECT ... FOR UPDATE”解决方案
  • 鱼骨图 - 如何绘制?
  • ​RecSys 2022 | 面向人岗匹配的双向选择偏好建模
  • #控制台大学课堂点名问题_课堂随机点名
  • (zhuan) 一些RL的文献(及笔记)
  • (没学懂,待填坑)【动态规划】数位动态规划
  • (一)utf8mb4_general_ci 和 utf8mb4_unicode_ci 适用排序和比较规则场景
  • (原創) 如何讓IE7按第二次Ctrl + Tab時,回到原來的索引標籤? (Web) (IE) (OS) (Windows)...
  • .gitignore文件设置了忽略但不生效
  • .mysql secret在哪_MYSQL基本操作(上)
  • .NET DataGridView数据绑定说明
  • .NET 将多个程序集合并成单一程序集的 4+3 种方法
  • .net 生成二级域名
  • .net访问oracle数据库性能问题
  • .NET框架
  • /etc/apt/sources.list 和 /etc/apt/sources.list.d
  • @Autowired和@Resource的区别
  • []利用定点式具实现:文件读取,完成不同进制之间的
  • [《百万宝贝》观后]To be or not to be?
  • [15] 使用Opencv_CUDA 模块实现基本计算机视觉程序
  • [AIGC] Nacos:一个简单 yet powerful 的配置中心和服务注册中心
  • [Android Pro] Notification的使用