# README
Schedule
A distributed scheduled task tool written in Go. It was incubated and evolved from the go-sail framework.
Requirement
go version >= 1.19
Installation
go get -u github.com/keepchen/schedule
Features
- Interval task
- Once time task
- Linux Crontab Style task
- Cancelable
- Race detection
- Manual call
Examples
Interval
schedule.NewJob("say hello").EveryMinute()
Once time
schedule.NewJob("check in").RunAfter(time.Second)
Linux Crontab Style
schedule.NewJob("good morning").RunAt(schedule.EveryDayOfEightAMClock)
Cancelable
cancel := schedule.NewJob("say hello").EveryMinute()
time.AfterFunc(time.Minute*3, cancel)
Race detection
Note: You must set redis provider before use.
// set redis provider
schedule.SetRedisProviderStandalone(...)
schedule.NewJob("say hello").WithoutOverlapping().EveryMinute()
Manual call
schedule.Call("say hello", false)
schedule.MustCall("task not exist will be panic", true)
# Functions
Base64Encode base64编码.
Call 手动启动任务
jobName 任务名称
mandatory 如果为true,将不检测堆叠状态而直接执行
# Note
内部函数将被同步式的调用.
GetLocalIP 获取本地ip地址(单播地址).
Job 实例化任务
name 任务名称唯一标识
task 任务处理函数
# Note:
如果name重复,将会panic.
JobIsRunning 查看任务是否正在执行.
MustCall 手动启动任务
jobName 任务名称
mandatory 如果为true,将不检测堆叠状态而直接执行
# Note
1.若jobName在任务列表中不存在(如未注册或被取消),将panic
2.内部函数将被同步式的调用.
NewJob 实例化任务
name 任务名称唯一标识
task 任务处理函数
# Note:
如果name重复,将会panic.
ReleaseRedisProvider 释放redis连接.
SetRedisProviderCluster 设置redis连接配置(cluster).
SetRedisProviderFailOver 设置redis连接配置(fail-over).
SetRedisProviderStandalone 设置redis连接配置(standalone).
# Constants
每天早上八点.
每15分钟的开始第0秒.
每5分钟的开始第0秒.
每45分钟的开始第0秒.
每分钟的开始第0秒.
每10分钟的开始第0秒.
每30分钟的开始第0秒.
每20分钟的开始第0秒.
每月的第一天的0点0分.
每周的第一天(周一)的0点0分.
每个工作日(周一~周五)的上午9点0分到下午5点0分每半时一次.
每个工作日(周一~周五)的上午9点0分到下午5点0分每小时一次.
每月的最后一天的0点0分.
每周的最后一天(周天)的0点0分.
每个工作日(周一~周五)的上午10点0分.
每个周末(周六和周日)的上午10点0分.
# Interfaces
Scheduler 调度器.
# Type aliases
CancelFunc 取消函数
尚未启动或未在运行中的任务将被直接取消。 正在运行中的任务将等待其运行结束,之后便不再启动。
调用此方法后,任务将从任务列表中移除。.