返回顶部
首页 > 资讯 > 后端开发 > GO >golang常用定时任务汇总
  • 681
分享到

golang常用定时任务汇总

2024-04-02 19:04:59 681人浏览 安东尼
摘要

目录前言cronexpr库定时语法介绍常用定时定时代码结语前言 项目中经常有定时任务的需求,一般都是利用linux的cron命令,定时执行脚本,无论从管理上来说还是从开发上来说都不是

前言

项目中经常有定时任务的需求,一般都是利用linux的cron命令,定时执行脚本,无论从管理上来说还是从开发上来说都不是最好的方案,要是能在项目里直接开发定时任务,就比较完美了。

golang利用Goroutine外加GitHub.com/gorhill/cronexpr库就可实现定时任务,代码简单,原理简单。

cronexpr库

定时语法介绍

该库是一个定时字符串规则解析库,同linux中的cron类似,但是可以精确到秒,也可以设定年,可以直接到git里查看,这里只对最常用的规则进行解释。

索引字段名是否必须值范围可用字符串
10-59* / , -
20-59* / , -
30-23* / , -
4日(月中)1-31* / , - L W
51-12* / , -
6日(星期中)0-6* / , - L #
71970-2099* / , -
  • 星号(*) 表示该字段所有的值,例:每秒 、每天。
  • 斜线(/) 范围增量,例: 分钟 3-59/15 表示3分到59分中从第3分开始,每15分中一次,分钟 */15 表示0-59分钟,从0分钟开始,每15分钟1次。*在这里表示全范围。
  • 逗号(,) 分割列表中的项目,例:星期1,星期2,星期3 表示为 0,1,2
  • 连字符(-) 表示范围,列,2000年到2010年表示为 2000-2010

L w # 不常用

常用定时

每日 即每天凌晨零点:0 0 0 * * * *

每日凌晨2点: 0 0 2 * * * *

每月开始: 0 0 0 1 * * *

每周开始: 0 0 0 * * 1 * 注意 0是星期天

定时代码

func Task () {
	cron := cronexpr.MustParse("0 0 0 * * * *")  //用cron库生成一个cronexpr.Expression对象
	next := cron.Next(time.Now()) //计算下次触发时间的时间对象
	for {
		now := time.Now() //每次循环计算获取当前时间
		if next.Before(now) || next.Equal(now) {  //下次触发时间与当前时间进行对比,等于或者时间已到 则进行任务触发
                    ... //此处填写任务代码
			next = cron.Next(now)  //重新计算下次任务时间的时间对象
		}
		select {
		case <-time.NewTicker(time.Second).C: //每秒扫描一遍 循环频率设定
		}
	}
}

代码里注释已经很清楚了。在整理一下步骤:

  • 先根据定时规则生成一个 cronexpr.Expression 对象,简称cron对象。
  • 循环中判断当前时刻和cron计算的下次时刻是否已经到达。
  • 已经到达则运行定时任务代码并重新计算下次到达时刻。
  • 设定循环频率,根据实际情况设定循环频率。

结语

golang定时任务的代码很简单,定时任务规则语法与linux cron相似,我总是记不住,每次用到时候就去翻git翻以前做过的代码,这次总结一下,下次直接翻这篇文章了,你也可以收藏起来,用到时候查询一下。

到此这篇关于golang 常用定时任务汇总的文章就介绍到这了,更多相关golang 定时任务内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

您可能感兴趣的文档:

--结束END--

本文标题: golang常用定时任务汇总

本文链接: https://lsjlt.com/news/121182.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • golang常用定时任务汇总
    目录前言cronexpr库定时语法介绍常用定时定时代码结语前言 项目中经常有定时任务的需求,一般都是利用linux的cron命令,定时执行脚本,无论从管理上来说还是从开发上来说都不是...
    99+
    2024-04-02
  • linux定时任务的一些相关操作汇总
    本人搜罗各大网站并测试了相关定时任务的操作方便大家进行查阅和操作。 1、cron介绍 我们经常使用的是 crontab 命令是cron table的简写,它是cron的配置文件,也可以叫它作业列表,我们可以在以下文件夹内...
    99+
    2022-06-04
    linux查看定时任务 linux定时任务设置每周执行 linux定时任务时间怎么设置
  • C#常用日期时间方法汇总
    一、月份英文简写 DateTime dt = DateTime.Now; string MM = dt.AddMonths(-1).ToString("MMM", new Syste...
    99+
    2024-04-02
  • SpringBoot任务之定时任务相关知识总结
    01: 异步任务 03: 邮件任务 一、SpringBoot--任务:定时任务 项目开发中经常需要执行一些定时任务,比如需要在每天凌晨的时候, 分析一次前一天的日志信息,Spri...
    99+
    2024-04-02
  • Python常用库汇总
    fuzzywuzzy ,字符串模糊匹配。   esmre ,正则表达式的加速器。   colorama 主要用来给文本添加各种颜色,并且非常简单易用。   Prettytable 主要用于在终端或浏览器端构建格式化的输出。   dif...
    99+
    2023-01-31
    常用 Python
  • golang定时任务框架有哪些
    go 语言提供了内置的 cron 包用于定时任务管理,功能有限但易于使用。此外,还有多种第三方库可扩展其功能,例如:go-queue:支持分布式和并行执行的灵活队列和定时任务框架。cro...
    99+
    2024-04-02
  • oracle 常用命令汇总
    登入oraclesqlplus / as sysdbaSQL> startup ---启动oracle 数据库SQL> shutdown immediate --停止数据库conn smsdb/...
    99+
    2024-04-02
  • mysqladmin常用命令汇总
    mysqladmin 工具的使用格式: mysqladmin [option] command [command option] command ...... 参数选项: -c number...
    99+
    2024-04-02
  • RMAN常用命令汇总
    这篇文章主要讲解了“RMAN常用命令汇总”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“RMAN常用命令汇总”吧!1.    ...
    99+
    2024-04-02
  • c# 常用框架汇总
    目录Json.NET Math.NETFaker.NetHtml Agility PackNCrawlerSuperWebSocketSuperSocket Qu...
    99+
    2024-04-02
  • Flutter 常用插件汇总
    目录DIO网络请求框架url_launcher系统应用跳转flutter_easyrefresh上下拉刷新flutter_swiper 轮播组件catcher 异常捕获cached_...
    99+
    2024-04-02
  • Git常用命令汇总
    1、配置自己的用户名和邮箱 git config --global user.name "用户名" //加引号 git config --global user.email "邮箱地...
    99+
    2024-04-02
  • Linux常用命令汇总
    1、tcpdump抓包 tcpdump这个命令是用来抓包的,默认情况下这个命令是没有的,需要安装一下: yum install -y tcpdump 使用这个命令的时候最好是加上你网卡的名称,不...
    99+
    2023-09-05
    linux 服务器 运维
  • Java常用命令汇总
    这篇文章就主要向大家展示了Java编程中常用的命令,下面看下具体内容。1、javac 将文件编译成.class文件用法: javac <options> <source files>其中, 可能的选项包括: -g ...
    99+
    2023-05-31
    java 常用命令 ava
  • Ubuntu服务器常用命令汇总
    下面的命令大都需要在 控制台 / 终端 / shell 下输入。 任何一个使用 ‘sudo' 作为前缀的命令都需要拥有管理员 (或 root) 访问权限。 所以你会被提示输入你自己的密码。 查看软件xxx安装内容 查看显...
    99+
    2022-06-04
    Ubuntu 常用命令
  • Golang分布式应用定时任务示例详解
    目录正文最小堆时间轮总结正文 在系统开发中,有一类任务不是立即执行,而是在未来某个时间点或者按照一定间隔去执行,比如日志定期压缩、报表制作、过期数据清理等,这就是定时任务。 在单机中...
    99+
    2024-04-02
  • Linux定时任务Crontab命令使用详解与总结
    crontab命令是Unix和linux用于设置周期性被执行的指令,是互联网很常用的技术,很多任务都会设置在crontab循环执行 如果不使用crontab,那么任务就是常驻程序,这对你的程序要求比较高,一个要求你的程序...
    99+
    2022-06-04
    Crontab命令使用详解 Crontab命令详解 Crontab命令技巧 Linux定时任务
  • Python常用知识点汇总
    1、Set基本数据类型 a、set集合,是一个无序且不重复的元素集合 class set(object): """ set() -> new empty set object set...
    99+
    2022-06-04
    知识点 常用 Python
  • dedecms常用sql语句汇总
    本文将一些dedecms常用的SQL语句做了整理归纳,希望对大家有所帮助. 在DedeCMS系统中,我们有很多地方都需要用到SQL语句,例如批量修改(替换)内容、数据内容调用等,在系统模板中有一个专门用于调用数据的模板标...
    99+
    2022-06-12
    dedecms sql语句
  • Android常用的intent action汇总
    本文总结讲述了Android常用的intent action功能。分享给大家供大家参考,具体如下: Android基本的设计理念是鼓励减少组件间的耦合,因此Android提供了...
    99+
    2022-06-06
    intent action Android
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作