timing

package module
v0.0.0-...-0947b79 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Sep 27, 2019 License: MIT Imports: 5 Imported by: 0

README

timing

A one-off timed task.

Thanks

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

just 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
  1. when user order expire, change order status => fail
  2. Timing of the message likefcm-message

and......

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type FuncJob

type FuncJob func()

callback function has interface Job

func (FuncJob) Run

func (f FuncJob) Run()

type Job

type Job interface {
	Run()
}

type Lock

type Lock interface {
	Lock()
	UnLock()
}

type OnceCron

type OnceCron struct {
	*TaskScheduler
}

compatible old name

func NewCron

func NewCron() *OnceCron

return old name with OnceCron

type Task

type Task struct {
	Job     Job
	Uuid    string
	RunTime int64 //UnixNanoTime
	Spacing int64 //spacing sencond
	EndTime int64 //UnixNanoTime
	Number  int   //exec number
}

need to do task has interface Job

func (*Task) GetEndTime

func (task *Task) GetEndTime() int64

func (*Task) GetJob

func (task *Task) GetJob() Job

func (*Task) GetRunNumber

func (task *Task) GetRunNumber() int

func (*Task) GetRunTime

func (task *Task) GetRunTime() int64

func (*Task) GetSpacing

func (task *Task) GetSpacing() int64

func (*Task) GetUuid

func (task *Task) GetUuid() string

func (*Task) RunJob

func (task *Task) RunJob()

func (*Task) SetEndTime

func (task *Task) SetEndTime(endTime int64) TaskSetInterface

func (*Task) SetJob

func (task *Task) SetJob(job Job) TaskSetInterface

func (*Task) SetRunNumber

func (task *Task) SetRunNumber(number int) TaskSetInterface

func (*Task) SetRuntime

func (task *Task) SetRuntime(runtime int64) TaskSetInterface

func (*Task) SetSpacing

func (task *Task) SetSpacing(spacing int64) TaskSetInterface

func (*Task) SetUuid

func (task *Task) SetUuid(uuid string) TaskSetInterface

type TaskGetInterface

type TaskGetInterface interface {
	RunJob()
	GetJob() Job
	GetUuid() string
	GetRunTime() int64
	GetSpacing() int64
	GetEndTime() int64
	GetRunNumber() int
}

type TaskInterface

type TaskInterface interface {
	TaskGetInterface
	TaskSetInterface
}

*

    Job     Job
    Uuid    string
	RunTime int64   //UnixNanoTime
	Spacing int64	//spacing sencond
	EndTime int64   //UnixNanoTime
	Number  int //exec number

type TaskLogInterface

type TaskLogInterface interface {
	Println(v ...interface{})
}

type TaskScheduler

type TaskScheduler struct {
	Logger TaskLogInterface
	// contains filtered or unexported fields
}

only exec cron timer cron

func NewScheduler

func NewScheduler() *TaskScheduler

return a Controller Scheduler

func (*TaskScheduler) AddFunc

func (scheduler *TaskScheduler) AddFunc(unixTime int64, f func())

add func to list

func (*TaskScheduler) AddFuncSpace

func (scheduler *TaskScheduler) AddFuncSpace(spaceTime int64, endTime int64, f func())

add spacing time job to list with endTime

func (*TaskScheduler) AddFuncSpaceNumber

func (scheduler *TaskScheduler) AddFuncSpaceNumber(spaceTime int64, number int, f func())

add spacing time job to list with number

func (*TaskScheduler) AddTask

func (scheduler *TaskScheduler) AddTask(task *Task) string

add a task to list

func (*TaskScheduler) AddTaskInterface

func (scheduler *TaskScheduler) AddTaskInterface(task TaskInterface)

func (*TaskScheduler) Export

func (scheduler *TaskScheduler) Export() []*Task

compatible old export tasks

func (*TaskScheduler) ExportInterface

func (scheduler *TaskScheduler) ExportInterface() []TaskInterface

new export

func (*TaskScheduler) GetTask

func (scheduler *TaskScheduler) GetTask() (task TaskGetInterface, tempKey int)

return a task and key In task list

func (*TaskScheduler) Lock

func (scheduler *TaskScheduler) Lock()

lock task []

func (*TaskScheduler) Start

func (scheduler *TaskScheduler) Start()

run Cron

func (*TaskScheduler) Stop

func (scheduler *TaskScheduler) Stop()

stop all

func (*TaskScheduler) StopOnce

func (scheduler *TaskScheduler) StopOnce(uuidStr string)

stop task with uuid

func (*TaskScheduler) UnLock

func (scheduler *TaskScheduler) UnLock()

unlock task []

type 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
}

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL