schedule

package
v2.0.0-...-c87de9c Latest Latest
Warning

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

Go to latest
Published: Aug 25, 2023 License: Apache-2.0 Imports: 10 Imported by: 0

Documentation

Overview

Package schedule is to help you manage schedule tasks.

Example
onceHandler := func(args map[string]interface{}) error {
	logger.Info("once handler executing...", args)
	return nil
}

timingHandler := func(args map[string]interface{}) error {
	logger.Info("timing handler executing...", args)
	return nil
}

sch := schedule.StdConfig("default").Build(schedule.WithHandler(onceHandler, timingHandler))

app := box.New(
	box.WithBoxes(sch),
)

if err := app.Run(); err != nil {
	logger.Fatal(err)
}
Output:

Index

Examples

Constants

View Source
const (
	Stop          = Type(0)
	Once          = Type(1)
	Timing        = Type(2)
	OnceAndTiming = Type(3)
)

Variables

This section is empty.

Functions

This section is empty.

Types

type Config

type Config struct {
	Type        Type                   `config:"type" desc:"Stop: 0, Once: 1, Timing: 2, OnceAndTiming: 3"`
	Spec        string                 `config:"spec" desc:"Cron spec info"`
	Specs       []string               `config:"specs" desc:"Multi cron spec info, higher priority than spec"`
	Compete     bool                   `config:"compete" desc:"Only winner can exec schedule"`
	AutoUnlock  bool                   `config:"autoUnlock" desc:"Auto unlock after task finish"`
	LockSeconds int                    `config:"lockSeconds" desc:"Lock ttl"`
	Delay       time.Duration          `config:"delay" desc:"Delay duration"`
	Args        map[string]interface{} `config:"args" desc:"Schedule arguments"`
	// contains filtered or unexported fields
}

func DefaultConfig

func DefaultConfig(key string) *Config

func StdConfig

func StdConfig(key string) *Config

func (*Config) Build

func (c *Config) Build(optionFunc ...OptionFunc) *Schedule

func (*Config) Path

func (c *Config) Path() string

type Handler

type Handler func(args map[string]interface{}) error

Handler TODO support context

type Journal

type Journal struct {
	Config    Config
	StartTime time.Time
	EndTime   time.Time
	Error     error
	Panic     interface{}
}

type OptionFunc

type OptionFunc func(*Config)

func WithHandler

func WithHandler(onceHandler, timingHandler Handler) OptionFunc

func WithLocker

func WithLocker(locker locker.MutexLocker) OptionFunc

func WithRecorder

func WithRecorder(recorder Recorder) OptionFunc

type Recorder

type Recorder func(Journal)

type Schedule

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

Schedule instance is a server, you should mount bo box application to manage lifecycle.

func (*Schedule) ExecOnce

func (sch *Schedule) ExecOnce()

ExecOnce exec once handler immediately

func (*Schedule) ExecTiming

func (sch *Schedule) ExecTiming()

ExecTiming exec timing handler immediately

func (*Schedule) Name

func (sch *Schedule) Name() string

func (*Schedule) Serve

func (sch *Schedule) Serve(context.Context) error

Serve schedule

func (*Schedule) Shutdown

func (sch *Schedule) Shutdown(context.Context) error

Shutdown stop cron

type Type

type Type int

Jump to

Keyboard shortcuts

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