scheduled

package module
v0.12.0 Latest Latest
Warning

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

Go to latest
Published: Feb 23, 2023 License: MIT Imports: 9 Imported by: 1

README

scheduled Go license codecov Go version PkgGoDev

scheduled 是一个计划任务管理工具

通过 scheduled 可以实现管理类似 linux 中 crontab 功能的计划任务功能。 当然功能并不止于此,用户可以实现自己的调度算法,定制任务的启动机制。

目前 scheduled 内置了以下三种算法:

  • at 在固定的时间点执行一次任务;
  • cron 实现了 crontab 中的大部分语法功能;
  • ticker 以固定的时间段执行任务,与 time.Ticker 相同;
srv := scheduled.NewServer(time.UTC, nil, nil)

ticker := func() error {
    _,err := fmt.Println("ticker @ ", time.Now())
    return err
}


expr := func() error {
    _,err := fmt.Println("cron @ ", time.Now())
    return err
}

srv.Tick(ticker, 1*time.Minute, false, false)
srv.Cron(expr, "@daily", false)
srv.Cron(expr, "* * 1 * * *", false)

ctx, cancel := context.WithCancel(context.Background())
srv.Serve(ctx)

版权

本项目采用 MIT 开源授权许可证,完整的授权说明可在 LICENSE 文件中找到。

Documentation

Overview

Package scheduled 个计划任务管理工具

通过 scheduled 可以实现管理类似 linux 中 crontab 功能的计划任务功能。 当然功能并不止于此,用户可以实现自己的调度算法,定制任务的启动机制。

目前 scheduled 内置了以下三种算法: - cron 实现了 crontab 中的大部分语法功能; - at 在固定的时间点执行一次任务; - ticker 以固定的时间段执行任务,与 time.Ticker 相同。

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type Job

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

Job 一个定时任务的基本接口

func (*Job) Delay

func (j *Job) Delay() bool

Delay 是否在延迟执行

即从任务执行完成的时间点计算下一次执行时间。

func (*Job) Err

func (j *Job) Err() error

Err 返回当前的错误信息

func (*Job) Name

func (j *Job) Name() string

Name 任务的名称

func (*Job) Next

func (j *Job) Next() time.Time

Next 返回下次执行的时间点

如果返回值的 IsZero() 为 true,则表示该任务不需要再执行, 一般为 At 之类的一次任务。

func (*Job) Prev

func (j *Job) Prev() time.Time

Prev 当前正在执行或是上次执行的时间点

func (*Job) State

func (j *Job) State() State

State 获取当前的状态

type JobFunc

type JobFunc func(time.Time) error

JobFunc 每一个定时任务实际上执行的函数签名

type Logger added in v0.12.0

type Logger interface {
	Print(...interface{})
	Println(...interface{})
	Printf(format string, v ...interface{})
}

type Scheduler added in v0.8.0

type Scheduler = schedulers.Scheduler

type Server

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

Server 管理所有的定时任务

func NewServer

func NewServer(loc *time.Location, erro, info Logger) *Server

NewServer 声明 Server 对象实例

loc 指定当前所采用的时区,若为 nil,则会采用 time.Local 的值; erro 计划任务发生的错误,向此输出,可以为空,表示不输出; info 计划任务的执行信息,向此输出,可以为空,表示不输出;

func (*Server) At added in v0.5.0

func (s *Server) At(name string, f JobFunc, t time.Time, delay bool)

At 添加 At 类型的定时器

具体文件可以参考 schedulers/at.At

func (*Server) Cron added in v0.5.0

func (s *Server) Cron(name string, f JobFunc, spec string, delay bool)

Cron 使用 cron 表达式新建一个定时任务

具体文件可以参考 schedulers/cron.Parse

func (*Server) Jobs

func (s *Server) Jobs() []*Job

Jobs 返回所有注册的任务

返回的是当前状态下的副本,具有时效性。

func (*Server) Location

func (s *Server) Location() *time.Location

Location 返回当前任务相关联的时区信息

func (*Server) New

func (s *Server) New(name string, f JobFunc, scheduler Scheduler, delay bool)

New 添加一个新的定时任务

name 作为定时任务的一个简短描述,不作唯一要求; delay 是否从任务执行完之后,才开始计算下个执行的时间点。

func (*Server) Serve

func (s *Server) Serve(ctx context.Context) error

Serve 运行服务

func (*Server) Tick added in v0.5.0

func (s *Server) Tick(name string, f JobFunc, dur time.Duration, imm, delay bool)

Tick 添加一个新的定时任务

type State

type State int8

State 状态值类型

const (
	Stopped State = iota
	Running
	Failed
)

表示任务状态

func (State) String added in v0.3.1

func (s State) String() string

Directories

Path Synopsis
Package schedulers 实现了部分时间调度的算法
Package schedulers 实现了部分时间调度的算法
at
Package at 提供类似于 at 指令的定时器
Package at 提供类似于 at 指令的定时器
cron
Package cron 实现了 cron 表达式的 Scheduler 接口
Package cron 实现了 cron 表达式的 Scheduler 接口
ticker
Package ticker 时间段固定的定时器
Package ticker 时间段固定的定时器

Jump to

Keyboard shortcuts

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