sch

package
v1.2.7 Latest Latest
Warning

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

Go to latest
Published: Oct 13, 2025 License: MIT Imports: 12 Imported by: 3

Documentation

Index

Constants

View Source
const (
	Daily   = 'd'
	Weekly  = 'w'
	Monthly = 'm'
)

Variables

View Source
var ZeroTrigger = &zeroTrigger{}

Functions

func AddTask added in v1.0.12

func AddTask(task *Task)

AddTask add a task

func Schedule

func Schedule(name string, trigger Trigger, callback func())

Schedule schedule a task and start it

func Start added in v1.0.12

func Start()

Start start all task

func Stop added in v1.0.12

func Stop()

Stop stop all task

Types

type Cron added in v1.2.3

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

Cron a cron expression parser and time calculator ┌───────────── second (0-59) (omittable) │ ┌───────────── minute (0-59) │ │ ┌───────────── hour (0-23) │ │ │ ┌───────────── day of the month (1-31, 32: last day of month) │ │ │ │ ┌───────────── month (1-12) │ │ │ │ │ ┌───────────── day of the week (0-6) (Sunday to Saturday; 7 is also Sunday) │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ * * * * * * Comma ( , ): used to separate items of a list. For example, "MON,WED,FRI". Dash ( - ) : used to define ranges. For example, "1-10" Slash (/) : combined with ranges to specify step values. For example, */5 in the minutes field indicates every 5 minutes It is shorthand for the more verbose POSIX form "5,10,15,20,25,30,35,40,45,50,55,00"

func ParseCron added in v1.2.3

func ParseCron(expression string, location ...*time.Location) (cron Cron, err error)

ParseCron parse the cron expression

func (*Cron) Next added in v1.2.3

func (cron *Cron) Next(date time.Time) time.Time

Next get the next time in the sequence matching the Cron pattern and after the value provided. The return value will have a whole number of seconds, and will be after the input value. @param date a seed value @return the next value matching the pattern

func (*Cron) Parse added in v1.2.3

func (cron *Cron) Parse(expression string, location ...*time.Location) error

Parse parse the cron expression

func (*Cron) String added in v1.2.3

func (cron *Cron) String() string

type CronTrigger

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

func NewCronTrigger

func NewCronTrigger(expr string, location ...*time.Location) (*CronTrigger, error)

func (*CronTrigger) Cron added in v1.2.3

func (ct *CronTrigger) Cron() string

func (*CronTrigger) NextExecutionTime

func (ct *CronTrigger) NextExecutionTime(task *Task) time.Time

type DelayedTrigger

type DelayedTrigger struct {
	Delay time.Duration
}

func (*DelayedTrigger) NextExecutionTime

func (dt *DelayedTrigger) NextExecutionTime(task *Task) time.Time

type Periodic added in v1.2.3

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

Periodic a periodic expression parser ┌───────────── unit (d: daily, w: weekly, m: monthly) │ ┌───────────── day (daily: 0, weekly: 1-7 monday to sunday, monthly: 1-31,32 is last day of month) │ │ ┌───────────── hour (0 - 23) │ │ │ * * * Comma ( , ): used to separate items of a list. For example, "MON,WED,FRI". Dash ( - ) : used to define ranges. For example, "1-10"

func ParsePeriodic added in v1.2.3

func ParsePeriodic(expr string) (p Periodic, err error)

ParsePeriodic parses a periodic expression.

func (*Periodic) Cron added in v1.2.3

func (p *Periodic) Cron() string

Cron returns the cron expression for the periodic schedule.

func (*Periodic) Parse added in v1.2.3

func (p *Periodic) Parse(expr string) (err error)

Parse parses a periodic expression.

func (*Periodic) String added in v1.2.3

func (p *Periodic) String() string

type PeriodicTrigger

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

func NewPeriodicTrigger added in v1.2.3

func NewPeriodicTrigger(periodic string, location ...*time.Location) (*PeriodicTrigger, error)

func (*PeriodicTrigger) Cron added in v1.2.3

func (pt *PeriodicTrigger) Cron() string

func (*PeriodicTrigger) NextExecutionTime

func (pt *PeriodicTrigger) NextExecutionTime(task *Task) time.Time

func (*PeriodicTrigger) Periodic added in v1.2.3

func (pt *PeriodicTrigger) Periodic() string

type RepeatTrigger added in v1.2.3

type RepeatTrigger struct {
	Duration     time.Duration
	InitialDelay time.Duration
	FixedRate    bool
}

func (*RepeatTrigger) NextExecutionTime added in v1.2.3

func (rt *RepeatTrigger) NextExecutionTime(task *Task) time.Time

type Scheduler

type Scheduler struct {
	Logger log.Logger
	// contains filtered or unexported fields
}

Scheduler task scheduler

func Default

func Default() *Scheduler

Default returns the default Scheduler instance used by the package-level functions.

func (*Scheduler) AddTask added in v1.0.12

func (s *Scheduler) AddTask(task *Task)

AddTask add or replace a task with same name

func (*Scheduler) GetTask added in v1.0.12

func (s *Scheduler) GetTask(name string) (*Task, bool)

GetTask get task by task name

func (*Scheduler) RemoveTask added in v1.2.3

func (s *Scheduler) RemoveTask(name string) (*Task, bool)

RemoveTask remove a task by name Returns the removed task and whether it was found.

func (*Scheduler) Schedule

func (s *Scheduler) Schedule(name string, trigger Trigger, callback func())

Schedule schedule a task and start it

func (*Scheduler) Start added in v1.0.12

func (s *Scheduler) Start()

Start start all tasks

func (*Scheduler) Stop added in v1.0.12

func (s *Scheduler) Stop()

Stop stop all tasks

type Task

type Task struct {
	Name           string
	Logger         log.Logger
	Trigger        Trigger
	Callback       func()
	ScheduledTime  time.Time
	ExecutionTime  time.Time
	CompletionTime time.Time
	Error          any
	// contains filtered or unexported fields
}

func GetTask added in v1.0.12

func GetTask(name string) (*Task, bool)

GetTask get task by task name

func NewTask added in v1.2.3

func NewTask(name string, trigger Trigger, callback func(), logger ...log.Logger) *Task

func (*Task) Start

func (t *Task) Start()

func (*Task) Stop

func (t *Task) Stop() bool

type Trigger

type Trigger interface {
	NextExecutionTime(task *Task) time.Time
}

Jump to

Keyboard shortcuts

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