https://github.com/lwl1989/timing
一个适用于一次性或者需要重复性任务的执行器,可配合常驻服务实现自动执行定时任务(非类linux CronTab)
https://github.com/lwl1989/timing
crontab ticket timer
Last synced: 8 months ago
JSON representation
一个适用于一次性或者需要重复性任务的执行器,可配合常驻服务实现自动执行定时任务(非类linux CronTab)
- Host: GitHub
- URL: https://github.com/lwl1989/timing
- Owner: lwl1989
- License: mit
- Created: 2018-04-25T04:41:33.000Z (over 7 years ago)
- Default Branch: master
- Last Pushed: 2021-03-03T10:08:22.000Z (almost 5 years ago)
- Last Synced: 2024-06-20T01:59:03.015Z (over 1 year ago)
- Topics: crontab, ticket, timer
- Language: Go
- Homepage:
- Size: 44.9 KB
- Stars: 57
- Watchers: 2
- Forks: 11
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# timing
A one-off timed task.
### Thanks
[robfig/cron](https://github.com/robfig/cron)
### ChangeLog
[2018-05-22] Add Export
[2018-05-22] Renamed Tasks to TaskScheduler
[2019-02-23] Add task interface and can rewrite the logic
### Quick Start
```
scheduler := NewScheduler()
scheduler.Start()
scheduler.AddFunc(time.Now().Unix()+1, func() {
fmt.Println("one second after")
})
scheduler.AddTask(&Task{
Job:FuncJob(func() {
fmt.Println("hello task2")
}),
RunTime:time.Now().Unix()+4,
})
//block it
```
add task
```
//10 seconds print one
scheduler.AddFuncSpace(10, func() {
fmt.Println("one second after")
})
scheduler.AddTask(&Task{
Job:FuncJob(func() {
fmt.Println("hello task")
}),
Spacing:4 //4 seconds send one
})
scheduler.AddTask(&Task{
Job:FuncJob(func() {
fmt.Println("hello task2")
}),
Spacing:4 //4 seconds send one
Number: 5 //exec 5 num go stop
})
scheduler.AddTask(&Task{
Job:FuncJob(func() {
fmt.Println("hello task3")
}),
Spacing:4 //4 seconds send one
EndTime: 1999999999 // at 199999999 go stop
})
```
### task interface
If you need rewrite a new task
implement TaskInterface
```
type TaskInterface interface {
TaskGetInterface
TaskSetInterface
}
type TaskSetInterface interface {
SetJob(job Job) TaskSetInterface
SetRuntime(runtime int64) TaskSetInterface
SetUuid(uuid string) TaskSetInterface
SetSpacing(spacing int64) TaskSetInterface
SetEndTime(endTime int64) TaskSetInterface
SetRunNumber(number int) TaskSetInterface
}
type TaskGetInterface interface{
RunJob()
GetJob() Job
GetUuid() string
GetRunTime() int64
GetSpacing() int64
GetEndTime() int64
GetRunNumber() int
}
```
### next
1. distributed the cron task
### Example
Order expire, change order status => fail
Timing of the send message
and more