Documentation
¶
Index ¶
- func Start()
- func Stop()
- func StopGlobalWithTimeout(timeout time.Duration) bool
- type CronSchedule
- type DailySchedule
- type FullCronSchedule
- type IntervalSchedule
- type Schedule
- type Scheduler
- func (s *Scheduler) AddTask(name string, schedule Schedule, handler TaskHandler) *Task
- func (s *Scheduler) DisableTask(name string) error
- func (s *Scheduler) EnableTask(name string) error
- func (s *Scheduler) GetTask(name string) (*Task, error)
- func (s *Scheduler) ListTasks() []*Task
- func (s *Scheduler) RemoveTask(name string)
- func (s *Scheduler) RunTask(name string) error
- func (s *Scheduler) Start()
- func (s *Scheduler) Stop()
- func (s *Scheduler) StopWithTimeout(timeout time.Duration) bool
- type Task
- type TaskHandler
- type WeeklySchedule
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func StopGlobalWithTimeout ¶ added in v1.2.0
StopGlobalWithTimeout 停止全局调度器并最多等待 timeout(P1 #10)。 全局调度器尚未创建时无操作返回 true,不会因此惰性创建它——供 App.Shutdown 安全调用。
Types ¶
type CronSchedule ¶
type CronSchedule struct {
Minute string // 分钟: "*" 或具体值如 "0,15,30"
Hour string // 小时: "*" 或具体值如 "8,12"
}
CronSchedule 简化 Cron 调度(仅分钟和小时)
type DailySchedule ¶
DailySchedule 每日定时调度
type FullCronSchedule ¶
type FullCronSchedule struct {
Minute string // 分钟: 0-59, "*", "*/n", "a-b", "a,b,c"
Hour string // 小时: 0-23, "*", "*/n", "a-b", "a,b,c"
Day string // 日: 1-31, "*", "*/n", "a-b", "a,b,c"
Month string // 月: 1-12, "*", "*/n", "a-b", "a,b,c"
Weekday string // 星期: 0-6 (周日=0), "*", "*/n", "a-b", "a,b,c"
}
FullCronSchedule 完整 Cron 表达式调度 格式: "分钟 小时 日 月 星期" (5字段) 示例: "0 12 * * *" 每天12点
"0 0 1 * *" 每月1号凌晨 "0 9-17 * * 1-5" 周一到周五 9点到17点每小时
func ParseCron ¶
func ParseCron(expr string) *FullCronSchedule
ParseCron 解析完整 Cron 表达式。 格式: "分钟 小时 日 月 星期" 示例:
"0 12 * * *" - 每天12:00 "*/15 * * * *" - 每15分钟 "0 9-17 * * 1-5" - 工作日9-17点每小时 "0 0 1 * *" - 每月1号凌晨 "0 0 * * 0" - 每周日凌晨
非法表达式会 panic(fail-fast),动态输入请用 ParseCronStrict 处理 error。 如需旧版“非法表达式回退为每分钟”的兼容语义,请显式使用 ParseCronOrDefault。
func ParseCronOrDefault ¶ added in v1.3.0
func ParseCronOrDefault(expr string) *FullCronSchedule
ParseCronOrDefault parses a Cron expression and falls back to all "*" (every minute) when expr is invalid. Prefer ParseCronStrict or ParseCron for new code; this helper exists for callers that intentionally want legacy fallback semantics.
func ParseCronStrict ¶ added in v1.2.0
func ParseCronStrict(expr string) (*FullCronSchedule, error)
ParseCronStrict 严格解析 Cron 表达式,校验字段数与各字段范围,非法返 error。 字段范围:分钟 0-59,小时 0-23,日 1-31,月 1-12,星期 0-6(周日=0,7 归一为 0)。
type IntervalSchedule ¶
IntervalSchedule 固定间隔调度
type Scheduler ¶
type Scheduler struct {
// contains filtered or unexported fields
}
Scheduler 调度器
func (*Scheduler) AddTask ¶
func (s *Scheduler) AddTask(name string, schedule Schedule, handler TaskHandler) *Task
AddTask 添加任务
func (*Scheduler) RunTask ¶
RunTask 立即运行任务(手动触发,同步返回 handler 错误)。
占用 per-task running 守卫,与调度循环互斥,防止同一任务重叠执行(C12b)。 不推进 NextRun(手动触发不影响调度节奏,C12c)。LastRun/RunCount 在锁内更新(C12a)。
L-J:handler 收到的 ctx 为调度器 s.ctx。Stop 后 s.ctx 已取消,handler 会收到 canceled ctx——这是预期行为(手动触发在调度器停止后不应继续执行长任务)。调用方若需在 Stop 后 仍运行一次性任务,应在自己的 ctx 下执行而非依赖调度器。
type Task ¶
type Task struct {
Name string // 任务名称
Schedule Schedule // 调度规则
Handler TaskHandler // 任务处理函数
Enabled bool // 是否启用
LastRun time.Time // 上次运行时间
NextRun time.Time // 下次运行时间
RunCount int // 运行次数
LastError error // CR3 修复:最近一次执行错误
// contains filtered or unexported fields
}
Task 定时任务
type WeeklySchedule ¶
WeeklySchedule 每周定时调度