scheduled

package module
v0.20.0 Latest Latest
Warning

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

Go to latest
Published: May 5, 2024 License: MIT Imports: 10 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() (err error)

Err 返回当前的错误信息

func (*Job) Next

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

Next 返回下次执行的时间点

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

func (*Job) Prev

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

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

func (*Job) State

func (j *Job) State() (s State)

State 获取当前的状态

func (*Job) Title added in v0.19.0

func (j *Job) Title() localeutil.Stringer

Title 简要描述信息

type JobFunc

type JobFunc = func(time.Time) error

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

type Logger added in v0.12.0

type Logger interface {
	// Error 输出错误对象到日志
	Error(error)

	// LocaleString 输出本地化的内容到日志
	LocaleString(localeutil.Stringer)
}

Logger 日志接口

NOTE: 同时实现了 github.com/issue9/logs.Logger 对象

func NewTermLogger added in v0.19.0

func NewTermLogger(p *localeutil.Printer) Logger

NewTermLogger 声明输出到终的日志

type Scheduler added in v0.8.0

type Scheduler = schedulers.Scheduler

type SchedulerFunc added in v0.14.0

type SchedulerFunc = schedulers.SchedulerFunc

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(title localeutil.Stringer, f JobFunc, t time.Time, delay bool) context.CancelFunc

At 添加 At 类型的定时器

具体文件可以参考 at.At

func (*Server) Cron added in v0.5.0

func (s *Server) Cron(title localeutil.Stringer, f JobFunc, spec string, delay bool) context.CancelFunc

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

具体文件可以参考 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(title localeutil.Stringer, f JobFunc, scheduler Scheduler, delay bool) context.CancelFunc

New 添加一个新的定时任务

title 任务的简要描述; 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(title localeutil.Stringer, f JobFunc, dur time.Duration, imm, delay bool) context.CancelFunc

Tick 添加一个新的定时任务

imm 表示是否先执行一次任务,如果为 true,将会排在任务队列的前列,而不是立即执行!

type State

type State int8
const (
	Stopped State = iota
	Running
	Failed
)

任务的几种状态

func (State) MarshalText added in v0.13.0

func (s State) MarshalText() ([]byte, error)

func (State) String added in v0.3.1

func (s State) String() string

func (*State) UnmarshalText added in v0.13.0

func (s *State) UnmarshalText(data []byte) error

Directories

Path Synopsis
Package schedulers 实现了部分时间调度的算法
Package schedulers 实现了部分时间调度的算法
at
Package at 提供类似于 at 指令的定时器
Package at 提供类似于 at 指令的定时器
cron
Package cron 实现了 cron 表达式的 [schedulers.Scheduler] 接口 [cron]: https://zh.wikipedia.org/wiki/Cron
Package cron 实现了 cron 表达式的 [schedulers.Scheduler] 接口 [cron]: https://zh.wikipedia.org/wiki/Cron
ticker
Package ticker 时间段固定的定时器
Package ticker 时间段固定的定时器

Jump to

Keyboard shortcuts

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