schedule

package
v0.0.0-...-7540414 Latest Latest
Warning

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

Go to latest
Published: Nov 10, 2020 License: MIT Imports: 8 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type ConstantDelaySchedule

type ConstantDelaySchedule struct {
	Delay time.Duration
}

ConstantDelaySchedule represents a simple recurring duty cycle, e.g. "Every 5 minutes". It does not support jobs more frequent than once a second.

func Every

func Every(duration time.Duration) ConstantDelaySchedule

Every returns a crontab Schedule that activates once every duration. Delays of less than a second are not supported (will round up to 1 second). Any fields less than a Second are truncated.

func (ConstantDelaySchedule) Next

func (schedule ConstantDelaySchedule) Next(t time.Time) time.Time

Next returns the next time this should be run. This rounds so that the next activation time will be on the second.

type Job

type Job func(TaskData)

Job callback function

type Jobhandle

type Jobhandle interface {
	TaskName() string
	Execute()
}

type ParseOption

type ParseOption int

cron表达式解析

const (
	Second         ParseOption = 1 << iota // Seconds field, default 0
	SecondOptional                         // Optional seconds field, default 0
	Minute                                 // Minutes field, default 0
	Hour                                   // Hours field, default 0
	Dom                                    // Day of month field, default *
	Month                                  // Month field, default *
	Dow                                    // Day of week field, default *
	DowOptional                            // Optional day of week field, default *
	Descriptor                             // Allow descriptors such as @monthly, @weekly, etc.
)

type Parser

type Parser struct {
	// contains filtered or unexported fields
}

A custom Parser that can be configured.

func NewParser

func NewParser(options ParseOption) Parser

NewParser creates a Parser with custom options.

It panics if more than one Optional is given, since it would be impossible to correctly infer which optional is provided or missing in general.

Examples

// Standard parser without descriptors
specParser := NewParser(Minute | Hour | Dom | Month | Dow)
sched, err := specParser.Parse("0 0 15 */3 *")

// Same as above, just excludes time fields
specParser := NewParser(Dom | Month | Dow)
sched, err := specParser.Parse("15 */3 *")

// Same as above, just makes Dow optional
specParser := NewParser(Dom | Month | DowOptional)
sched, err := specParser.Parse("15 */3")

func (Parser) Parse

func (p Parser) Parse(spec string) (Schedule, error)

Parse returns a new crontab schedule representing the given spec. It returns a descriptive error if the spec is not valid. It accepts crontab specs and features configured by NewParser.

type Schedule

type Schedule interface {
	// Next returns the next activation time, later than the given time.
	// Next is invoked initially, and then each time the job is run.
	Next(time.Time) time.Time
}

func ParseStandard

func ParseStandard(standardSpec string) (Schedule, error)

ParseStandard returns a new crontab schedule representing the given standardSpec (https://en.wikipedia.org/wiki/Cron). It requires 5 entries representing: minute, hour, day of month, month and day of week, in that order. It returns a descriptive error if the spec is not valid.

It accepts

  • Standard crontab specs, e.g. "* * * * ?"
  • Descriptors, e.g. "@midnight", "@every 1h30m"

type SimpleJobHandle

type SimpleJobHandle struct {
	Name    string
	Data    TaskData
	JobFunc Job
}

func (*SimpleJobHandle) Execute

func (this *SimpleJobHandle) Execute()

func (*SimpleJobHandle) TaskName

func (this *SimpleJobHandle) TaskName() string

type SpecSchedule

type SpecSchedule struct {
	Second, Minute, Hour, Dom, Month, Dow uint64

	// Override location for this schedule.
	Location *time.Location
}

func (*SpecSchedule) Next

func (s *SpecSchedule) Next(t time.Time) time.Time

Next returns the next time this schedule is activated, greater than the given time. If no time can be found to satisfy the schedule, return the zero time.

type TaskData

type TaskData map[interface{}]interface{}

TaskData callback params

type TimeWheel

type TimeWheel struct {
	// contains filtered or unexported fields
}

time wheel struct

func New

func New(interval time.Duration, slotNum int) *TimeWheel

New create a empty time wheel

func NewMinuteWheel

func NewMinuteWheel(slotNum int) *TimeWheel

func NewSecondWheel

func NewSecondWheel(slotNum int) *TimeWheel

func (*TimeWheel) AddCycleSimpleTask

func (tw *TimeWheel) AddCycleSimpleTask(interval time.Duration, times int, key interface{}, job Job) error

func (*TimeWheel) AddForeverTaskByHours

func (tw *TimeWheel) AddForeverTaskByHours(t int64, key interface{}, data TaskData, job Job) error

func (*TimeWheel) AddForeverTaskByMinutes

func (tw *TimeWheel) AddForeverTaskByMinutes(t int64, key interface{}, data TaskData, job Job) error

func (*TimeWheel) AddForeverTaskBySeconds

func (tw *TimeWheel) AddForeverTaskBySeconds(t int64, key interface{}, data TaskData, job Job) error

func (*TimeWheel) AddJobByCron

func (tw *TimeWheel) AddJobByCron(cron string, job Jobhandle) error

func (*TimeWheel) AddOneTimeSimpleTask

func (tw *TimeWheel) AddOneTimeSimpleTask(t time.Time, job Job) error

func (*TimeWheel) AddOneTimeTask

func (tw *TimeWheel) AddOneTimeTask(t time.Time, data TaskData, job Job) error

func (*TimeWheel) AddTask

func (tw *TimeWheel) AddTask(interval time.Duration, times int, key interface{}, data TaskData, job Job) error

AddTask add new task to the time wheel

func (*TimeWheel) AddTaskByCron

func (tw *TimeWheel) AddTaskByCron(cron string, key interface{}, data TaskData, job Job) error

func (*TimeWheel) RemoveTask

func (tw *TimeWheel) RemoveTask(key interface{}) error

RemoveTask remove the task from time wheel

func (*TimeWheel) Start

func (tw *TimeWheel) Start()

Start start the time wheel

func (*TimeWheel) Stop

func (tw *TimeWheel) Stop()

Stop stop the time wheel

func (*TimeWheel) UpdateTask

func (tw *TimeWheel) UpdateTask(key interface{}, interval time.Duration, taskData TaskData) error

UpdateTask update task times and data

Jump to

Keyboard shortcuts

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