基本介绍
gcron
模块提供了对定时任务的实现,支持类似 crontab
的配置管理方式,并支持最小粒度到 秒
的定时任务管理。
使用方式:
import "github.com/gogf/gf/v2/os/gcron"
接口文档:
https://pkg.go.dev/github.com/gogf/gf/v2/os/gcron
简要说明:
New
方法用于创建自定义的定时任务管理对象。Add
方法用于添加定时任务,其中:- -
pattern
参数使用CRON语法格式
(具体说明见本章后续相关说明)。 - -
job
参数为需要执行的任务方法(方法地址)。 - -
name
为非必需参数,用于给定时任务指定一个 唯一的 名称,注意如果已存在相同名称的任务,那么添加定时任务将会失败。
- -
AddSingleton
方法用于添加单例定时任务,即同时只能有一个该任务正在运行(在内存中进行去重判断)。AddOnce
方法用于添加只运行一次的定时任务,当运行一次数后该定时任务自动销毁。AddTimes
方法用于添加运行指定次数的定时任务,当运行times
次数后该定时任务自动销毁。Entries
方法用于获取当前所有已注册的定时任务信息。Remove
方法用于根据名称删除定时任务(停止并删除)。Search
方法用于根据名称进行定时任务搜索(返回定时任务*Entry
对象指针)。Start
方法用于启动定时任务(Add
后自动启动定时任务), 可通过name
参数指定需要启动的任务名称。Stop
方法用于停止定时任务(Remove
会停止并删除), 可通过name
参数指定需要停止的任务名称。Close
方法用于关闭自定义的定时任务管理对象。
注意事项
- 进程全局时区的影响:由于定时任务严格依赖时间计算,因此进程的全局时区对定时任务执行影响比较大。在添加定时任务时,请注意当前进程的全局时区设置,在没有设置全局时区时,默认使用的是系统时区。关于时区设置更多信息请参考: 时间管理-时区设置
相关文档
📄️ 定时任务-表达式
定时任务采用了类 Linux Crontab 的表达格式,使得开发者能够快速理解掌握定时任务表达式技巧。但需要注意的是,由于定时任务模块是基于代码层面的控制,因此控制的粒度会更细,最小粒度到 秒,格式被划分为了 6 段。而 Linux Crontab 是基于程序层面的控制,最小粒度到 分,格式被划分为了 5 段。
📄️ 定时任务-基本使用
基本使用
📄️ 定时任务-日志管理
gcron 支持日志功能,并可设置日志输出的文件以及级别。默认情况下仅会输出 LEVELWARN | LEVELERRO | LEVELCRIT 错误级别的日志(包括定时任务运行异常日志),运行日志以 LEVELDEBUG 的级别进行记录,因此默认不会记录。 gcron 组件使用了 goframe 框架统一的日志组件,因此可以复用日志组件的所有特性。相关方法:
📄️ 定时任务-gcron与gtimer
gcron 与 gtimer 区别