使用gocron实现秒级定时任务

项目简介

使用Go语言开发的定时任务集中调度和管理系统, 用于替代Linux-crontab

功能特性

  • Web界面管理定时任务, 支持动态添加、删除、编辑任务
  • crontab时间表达式,精确到秒
  • 任务执行失败重试设置
  • 任务超时设置
  • 延时任务
  • 任务类型
    • shell任务
    • 查看任务执行日志
    • 任务执行结果通知, 支持邮件、Slack

1、cron表达式的基本格式

在linux中使用过crontab,对定时任务应该就会有所了解,linux中利用crontab -e打开crontab表来添加定时任务,但是只能精确到分钟,go中却可以精确到秒。表达式如下:

 ┌─────────────second 范围 (0 - 60)
 │ ┌───────────── min (0 - 59)
 │ │ ┌────────────── hour (0 - 23)
 │ │ │ ┌─────────────── day of month (1 - 31)
 │ │ │ │ ┌──────────────── month (1 - 12)
 │ │ │ │ │ ┌───────────────── day of week (0 - 6) (0 to 6 are Sunday to
 │ │ │ │ │ │                  Saturday)
 │ │ │ │ │ │
 │ │ │ │ │ │
 *  *  *  *  *  *

Linux-crontab时间表达式语法, 支持秒级任务定义
格式: 秒 分 时 天 月 周
示例:
1 * * * * * 每分钟第一秒运行
*/20 * * * * * 每隔20秒运行一次
0 30 21 * * * 每天晚上21:30:00运行一次
0 0 23 * * 6 每周六晚上23:00:00 运行一次
快捷语法:
@yearly 每年运行一次
@monthly 每月运行一次
@weekly 每周运行一次
@daily 每天运行一次
@midnight 每天午夜运行一次
@hourly 每小时运行一次
@every 30s 每隔30秒运行一次
@every 1m20s 每隔1分钟20秒运行一次
@every 3h5m10s 每隔3小时5分钟10秒运行一次

2、特殊字符

星号:匹配所有值

斜线:增长间隔,*/5表示5 10 15....分钟运行

逗号:枚举值,1,13,21表示1 13 21分钟运行

连字符:表示范围,10-15表示10 11 12 13 15分钟运行

问号:只用于日和星期,表示不指定,可用*替代

1.安装Go
使用go程序必须先有go,因此这里以最简单的方式进行安装介绍。

1.1 windows安装
下载链接
https://studygolang.com/dl/golang/go1.12.5.windows-amd64.msi

安装
直接下一步下一步,直到完成即可。windows默认会添加到环境变量中。

测试安装成功与否

cmd中输入以下命令:

go version
如果能输出版本信息,说明安装成功

1.2 linux安装
安装

yum install go
测试

go version
2.下载gocron
gocron需要使用下载gocron和gocron-node

这我里以windows下为例,linux也是一样的。
下载地址:https://github.com/ouqiang/gocron/releases
下载后在cmd中运行gocron与gocron-node

启动gocron
giftpc@gift MINGW64 /d/gocron
$ /d/gocron/gocron.exe web
[Macaron] listening on 0.0.0.0:5920 (production)
启动gocron-node
giftpc@gift MINGW64 /d/gocron
$ /d/gocron/gocron-node.exe
time="2019-06-04T13:32:12+08:00" level=info msg="server listen on 0.0.0.0:5921"
打开web界面
从上面可以看到gocron默认监听的是5920端口,通过浏览器访问:localhost:5920便可以打开web管理窗口

使用gocron实现秒级定时任务_第1张图片
首页打开需要进行一些安装配置(需要有数据库支持,建好数据库后自动建的表)

使用gocron实现秒级定时任务_第2张图片

安装完成后会跳转到登录界面


添加任务节点
这里的每个定时任务都需要在一个任务节点下,因此想要添加一个定时任务需要先添加一个任务节点,示例如下:

使用gocron实现秒级定时任务_第3张图片
添加定里任务
这里按照以下图片进行添加即可:

 使用gocron实现秒级定时任务_第4张图片


3. 文档
添加任务时的一些规则与语法设置方式,可以参考文档进行学习与配置。

文档-https://github.com/ouqiang/gocron/wiki

你可能感兴趣的:(golang,环境及其他,linux,运维,服务器)