timer

package
v0.0.1 Latest Latest
Warning

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

Go to latest
Published: Dec 2, 2020 License: MIT Imports: 11 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (
	// ErrJobExist 同名字的任务已经被添加过了
	ErrJobExist = errors.New("job has been exist")
)

Functions

func UseCustomStore

func UseCustomStore(store StoreDriver)

UseCustomStore 使用自定义的存储

func UseRedisStore

func UseRedisStore(r redis.UniversalClient)

UseRedisStore 将默认全局变量 driver 注册为 RedisStore

Types

type ILogger

type ILogger struct {
	*logrus.Entry
}

ILogger 用于将 logrus 转为 log.Logger

func (*ILogger) Error

func (logger *ILogger) Error(err error, msg string, keysAndValues ...interface{})

Error 实现来自 cron 的logger接口

func (*ILogger) Info

func (logger *ILogger) Info(_ string, _ ...interface{})

Info 实现来自 cron 的logger接口

type JobInterface

type JobInterface interface {
	// Name 定时任务名称, 保持唯一
	Name() JobName
	// Description 对定时任务的描述
	Description() string
	// Spec 执行触发时间表达式, 下边是一些例子
	//  0 * * * * ?                      每1分钟触发一次
	//  0 0 * * * ?                      每天每1小时触发一次
	//  0 0 10 * * ?                     每天10点触发一次
	//  0 * 14 * * ?                     在每天下午2点到下午2:59期间的每1分钟触发
	//  0 30 9 1 * ?                     每月1号上午9点半
	//  0 15 10 15 * ?                   每月15日上午10:15触发
	//  */5 * * * * ?                    每隔5秒执行一次
	//  0 */1 * * * ?                    每隔1分钟执行一次
	//  0 0 5-15 * * ?                   每天5-15点整点触发
	//  0 0/3 * * * ?                    每三分钟触发一次
	//  0 0-5 14 * * ?                   在每天下午2点到下午2:05期间的每1分钟触发
	//  0 0/5 14 * * ?                   在每天下午2点到下午2:55期间的每5分钟触发
	//  0 0/5 14,18 * * ?                在每天下午2点到2:55期间和下午6点到6:55期间的每5分钟触发
	//  0 0/30 9-17 * * ?                朝九晚五工作时间内每半小时
	//  0 0 10,14,16 * * ?               每天上午10点,下午2点,4点
	//  0 0 12 ? * WED                   表示每个星期三中午12点
	//  0 0 17 ? * TUES,THUR,SAT         每周二、四、六下午五点
	//  0 10,44 14 ? 3 WED               每年三月的星期三的下午2:10和2:44触发
	//  0 15 10 ? * MON-FRI              周一至周五的上午10:15触发
	//  0 0 23 L * ?                     每月最后一天23点执行一次
	//  0 15 10 L * ?                    每月最后一日的上午10:15触发
	//  0 15 10 ? * 6L                   每月的最后一个星期五上午10:15触发
	//  0 15 10 * * ? 2005               2005年的每天上午10:15触发
	//  0 15 10 ? * 6L 2002-2005         2002年至2005年的每月的最后一个星期五上午10:15触发
	//  0 15 10 ? * 6#3                  每月的第三个星期五上午10:15触发
	Spec() string
	Runnable() bool
	Pause()
	// Start 再次启动
	Start()
	Run()
	Status() Status
}

JobInterface 定时任务接口

type JobName

type JobName string

JobName 任务名称

type RedisStore

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

RedisStore redis 存储

func (*RedisStore) Get

func (r *RedisStore) Get(name JobName, key string) string

Get 获取某个任务的某个状态

func (*RedisStore) Set

func (r *RedisStore) Set(name JobName, key, val string)

Set 设置指定任务的某个状态对应的值

type Status

type Status int

Status 定时任务状态

const (
	// Run 定时任务处于正常可以执行状态
	Run Status = iota
	// Pause 定时任务处于暂停状态
	Pause
)

func (Status) MarshalJSON

func (status Status) MarshalJSON() (data []byte, err error)

MarshalJSON json

func (Status) String

func (status Status) String() string

String ...

type StoreDriver

type StoreDriver interface {
	// Set 设置指定任务的某个状态对应的值
	Set(name JobName, key, val string)
	// Get 获取某个任务的某个状态
	Get(name JobName, key string) string
}

StoreDriver 定时器状态保存驱动

type Task

type Task struct {
	EntryID cron.EntryID // 定时任务标识
	Name    JobName
	Job     JobInterface // 定时任务本身
}

Task 单个定时任务的一些信息

func (*Task) Run

func (info *Task) Run()

Run 运行

func (*Task) Status

func (info *Task) Status() Status

Status 状态

type Tasks

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

Tasks 定时任务集合

func (*Tasks) AddJob

func (t *Tasks) AddJob(jobInterface JobInterface) error

AddJob 添加定时任务

func (*Tasks) All

func (t *Tasks) All() map[JobName]*Task

All 所有任务列表

func (*Tasks) Exec

func (t *Tasks) Exec(name JobName)

Exec 直接执行

func (*Tasks) GetJob

func (t *Tasks) GetJob(name JobName) *Task

GetJob 获取任务

func (*Tasks) Pause

func (t *Tasks) Pause(name JobName)

Pause 暂停某个任务

func (*Tasks) Start

func (t *Tasks) Start(name JobName)

Start 再次启动

type Timer

type Timer struct {
	Cron *cron.Cron
	// contains filtered or unexported fields
}

Timer 计划任务

func NewTimer

func NewTimer(log *logrus.Entry) *Timer

NewTimer 开启新的定时器 使用 quartz 规则, 这是一种 Java 定时任务同用的规则, 他可以精确到秒

see http://www.quartz-scheduler.org/documentation/quartz-2.3.0/tutorials/tutorial-lesson-06.html

func (*Timer) AddJob

func (timer *Timer) AddJob(job JobInterface) error

AddJob 添加任务

func (*Timer) LastError

func (timer *Timer) LastError(name JobName) map[string]interface{}

LastError 上次执行的时间

func (*Timer) Next

func (timer *Timer) Next(name JobName) time.Time

Next 下一次执行的时间

func (*Timer) Prev

func (timer *Timer) Prev(name JobName) time.Time

Prev 上次执行的时间

func (*Timer) Run

func (timer *Timer) Run()

Run 启动定时器

func (*Timer) Tasks

func (timer *Timer) Tasks() *Tasks

Tasks 任务列表

Jump to

Keyboard shortcuts

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