crontab

package
v1.3.7 Latest Latest
Warning

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

Go to latest
Published: Oct 9, 2026 License: MIT Imports: 17 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (
	ErrJobBlocked = errors.New("job is blocked")
	BlockedLimit  = 2 * time.Second
)

DefaultParser 默认解析器,支持可选的秒字段. 字段集合必须与 initMain 中 cron.WithSecondOptional() 一致, 否则 addJob 预检通过后 AddFunc 仍可能失败, 或预检误拒合法表达式. 支持的表达式格式: - 标准格式(5字段): "分钟 小时 日 月 星期" - 扩展格式(6字段): "秒 分钟 小时 日 月 星期"

字段说明: 秒 (可选): 0-59 分钟: 0-59 小时: 0-23 日: 1-31 月: 1-12 (或 JAN-DEC) 星期: 0-6 (0或7表示周日,或 SUN-SAT)

特殊字符: *: 匹配任意值

Functions

func DataStats

func DataStats() *jsongen.Map

DataStats 返回任务数及调度时间, 只取一次调度器快照, 避免逐任务复制整张条目表. 任务表与调度器之间不是原子快照; 并发注册、停止时允许短暂缺项或零时间, 不用于调度决策.

func DataStatsJSON added in v1.0.1

func DataStatsJSON() json.RawMessage

DataStatsJSON 将同一次 DataStats 结果序列化为 JSON, 字段和时间格式保持一致.

func InitTester added in v0.10.7

func InitTester()

func IsRealBlocked

func IsRealBlocked() error

IsRealBlocked 场景: 任务设置了立即执行, 00:59.999 刚开始执行, 下次执行时间 01:00 跟着就到了, 再次启动了任务, 但没抢到锁, 忽略该次 Blocked 宽限期沿用进程 StartTime, 不按每个 Job 的注册时间重新计算.

func IsValidSpec added in v0.6.2

func IsValidSpec(spec string, parser ...cron.Parser) bool

IsValidSpec 检查定时任务表达式是否有效

示例: "* * * * *" // 每分钟执行 "* * * * * *" // 每秒执行 "0 */5 * * * *" // 每5分钟执行 "0 0 3 * * *" // 每天凌晨3点执行 "0 0 3 1 * *" // 每月1号凌晨3点执行 "0 0 3 * * 1" // 每周一凌晨3点执行

参数:

spec: 定时任务表达式
parser: 可选的解析器,如果不提供则使用默认解析器

返回值:

bool: 表达式是否有效

?: 用于日和星期字段,表示不指定值 -: 范围,如 1-5 /: 步长,如 */5 表示每5个单位 ,: 列表,如 1,3,5 表示1、3、5

func SetSkipIfStillRunning added in v0.6.8

func SetSkipIfStillRunning(v bool)

SetSkipIfStillRunning 全局设置任务是否单例执行

func StopJob

func StopJob(name string) bool

StopJob 停止查询时的同名任务, 返回值表示是否找到登记, 不表示等待 Runner 执行结束. 与同名替换并发时, 只停止此次查询取得的对象.

func StopTester added in v0.10.7

func StopTester()

Types

type Job

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

Job 保存一次注册的调度状态, 停止后不重新启动; 重建同名任务会创建新对象.

func AddJob

func AddJob(ctx context.Context, name, spec string, runner Runner, opts ...cron.EntryOption) (*Job, error)

AddJob 添加或按名更新任务. spec 非法 (含空串) 时返回 error, 不停止同名旧任务; 合法后同 spec skip, 不同则先停再挂. 并发同名注册须由调用方串行化; 同 spec 复用不替换原 Runner、context、fields、once 或 opts.

func AddJobWithFields added in v0.10.8

func AddJobWithFields(ctx context.Context, name, spec string, runner Runner, fields map[string]any, opts ...cron.EntryOption) (*Job, error)

AddJobWithFields 按 AddJob 规则注册任务, 浅拷贝 fields 后附加到执行错误日志.

func AddOnceJob added in v0.10.7

func AddOnceJob(ctx context.Context, name, spec string, runner Runner, opts ...cron.EntryOption) (*Job, error)

AddOnceJob 添加单次任务, 只尝试执行一次, 返回错误或 panic 后也自动移除, 不自动重试. 同名同 spec 的运行中任务仍按 AddJob 规则复用, 不改变原任务类型.

func AddOnceJobWithFields added in v0.10.8

func AddOnceJobWithFields(ctx context.Context, name, spec string, runner Runner, fields map[string]any, opts ...cron.EntryOption) (*Job, error)

AddOnceJobWithFields 按 AddOnceJob 规则注册单次任务, 浅拷贝 fields 后附加到执行错误日志.

func GetJob

func GetJob(name string) (*Job, bool)

GetJob 返回查询时该名称的登记对象; 查询之后仍可能被停止或替换.

func (*Job) IsRunning

func (j *Job) IsRunning() bool

IsRunning 表示任务是否处于可调度状态, 不表示 Runner 此刻正在执行.

func (*Job) Name

func (j *Job) Name() string

Name 返回注册时确定的任务名, 停止后仍可查询.

func (*Job) Next

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

Next 返回调度器快照中的下次执行时间; 任务停止或条目不存在时返回零值.

func (*Job) Prev

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

Prev 返回调度器快照中的上次触发时间, 不代表业务执行完成时间. 未设置上次调度时间、任务停止或条目不存在时返回零值; 初始值也可能由注册选项指定.

func (*Job) Stop

func (j *Job) Stop()

Stop 幂等地撤销本任务的登记、调度条目并取消 context, 不等待已经进入执行流程的回调. 并发重复调用可在首次调用清理完之前返回; 已进入 Runner 的业务须自行响应取消.

type M added in v0.0.10

type M struct{}

func (*M) Runtime added in v0.0.10

func (m *M) Runtime() error

Runtime 重新加载配置时运行

func (*M) Start added in v0.0.10

func (m *M) Start() error

Start 程序启动时初始化

func (*M) Stop added in v0.0.10

func (m *M) Stop() error

Stop 程序退出时运行

type Runner

type Runner interface {
	Run(ctx context.Context) error
}

Runner 执行业务任务; context 取消由实现自行处理, 调度器不会强制中断已进入的 Run.

Jump to

Keyboard shortcuts

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