scheduled

package module
v0.3.0 Latest Latest
Warning

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

Go to latest
Published: May 12, 2019 License: MIT Imports: 9 Imported by: 1

README

scheduled Build Status license codecov Go version GoDoc

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

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

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

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

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


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

srv.NewTicker(ticker, 1*time.Minute)
srv.NewCron(expr, "@daily")
srv.NewCron(expr, "* * 1 * * *")

log.Panic(srv.Serve())
版权

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

Documentation

Overview

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

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

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

cron 实现了 crontab 中的大部分语法功能;
at 在固定的时间点执行一次任务;
ticker 以固定的时间段执行任务,与 time.Ticker 相同。

Index

Constants

This section is empty.

Variables

View Source
var (
	ErrNoJobs  = errors.New("任务列表为空")
	ErrRunning = errors.New("任务已经在运行")
)

一些错误的定义

Functions

This section is empty.

Types

type Job

type Job struct {
	schedulers.Scheduler
	// 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 Server

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

Server 管理所有的定时任务

func NewServer

func NewServer(loc *time.Location) *Server

NewServer 声明 Server 对象实例

loc 指定当前所采用的时区,若为 nil,则会采用 time.Local 的值。

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 schedulers.Scheduler, delay bool) error

New 添加一个新的定时任务

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

func (*Server) NewAt

func (s *Server) NewAt(name string, f JobFunc, t string, delay bool) error

NewAt 添加 At 类型的定时器

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

func (*Server) NewCron

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

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

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

func (*Server) NewTicker

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

NewTicker 添加一个新的定时任务

func (*Server) Serve

func (s *Server) Serve(errlog *log.Logger) error

Serve 运行服务

errlog 定时任务的错误信息在此通道输出,若为空,则不输出。

func (*Server) Stop

func (s *Server) Stop()

Stop 停止当前服务

type State

type State int8

State 状态值类型

const (
	Stoped State = iota
	Running
	Failed
)

表示任务状态

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 时间段固定的定时器,功能与 time.Ticker 相同。
Package ticker 时间段固定的定时器,功能与 time.Ticker 相同。

Jump to

Keyboard shortcuts

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