Documentation
¶
Overview ¶
Package scheduling provides a task scheduler modelled on Laravel's Task Scheduling. Tasks run on a wall-clock cadence (every X minutes, every hour, every day at a fixed time, …) and are dispatched by a single in-process Runner.
No external cron parser is required — Laravel's most common expressions (EveryMinute, EveryFiveMinutes, Hourly, Daily, Weekly, Monthly, At "HH:MM", Cron expression) are expressed as small Schedule values that the Runner ticks against once per second.
Usage:
s := scheduling.New()
s.Job("cleanup-old-sessions", scheduling.Hourly(), func(ctx context.Context) error {
return svc.PurgeStaleSessions(ctx)
})
s.Job("nightly-billing", scheduling.DailyAt("02:00"), runBilling)
s.Job("metrics-flush", scheduling.Every(5*time.Minute), flushMetrics)
go s.Run(ctx)
Index ¶
Constants ¶
This section is empty.
Variables ¶
var ErrAlreadyRegistered = errors.New("scheduling: name already registered")
ErrAlreadyRegistered is reserved for drivers that detect duplicate task names at register-time when the panic-on-collision behaviour is unsuitable.
Functions ¶
This section is empty.
Types ¶
type Runner ¶
type Runner struct {
// contains filtered or unexported fields
}
Runner orchestrates registered tasks.
type Schedule ¶
Schedule decides whether a job is due at instant t. Implementations are stateless — the Runner remembers the last tick.