Documentation ¶
Index ¶
- Constants
- Variables
- func GetJobName(job JobItf) (name string)
- func NewServer(manager *Manager, address string) (*http.Server, error)
- func NewSideCarServer(manager *Manager, address string)
- func SetJobMetadata(ctx context.Context, meta JobMetadata) context.Context
- type Func
- type FuncJob
- type Handler
- type Interceptor
- type Job
- type JobItf
- type JobMetadata
- type Manager
- func (m *Manager) GetEntries() []cron.Entry
- func (m *Manager) GetEntry(id cron.EntryID) *cron.Entry
- func (m *Manager) GetInfo() map[string]interface{}
- func (m *Manager) GetStatusData() []StatusData
- func (m *Manager) GetStatusJSON() map[string]interface{}
- func (m *Manager) Remove(id cron.EntryID)
- func (m *Manager) Schedule(spec string, job JobItf) error
- func (m *Manager) ScheduleFunc(spec, name string, cmd func(ctx context.Context) error) error
- func (m *Manager) Schedules(spec, separator string, job JobItf) error
- func (m *Manager) SchedulesFunc(spec, separator, name string, cmd func(ctx context.Context) error) error
- func (m *Manager) Start()
- func (m *Manager) Stop()
- type Option
- type ServerController
- type StatusCode
- type StatusData
Constants ¶
const (
// CtxKeyJobMetadata is context for cron job metadata.
CtxKeyJobMetadata = contextKey("cron-job-metadata")
)
Context key for standardized context value.
const SleepDuration = time.Second * 10
SleepDuration defines the duration to sleep the server if the defined address is busy.
Variables ¶
var ( // Support the v1 where the first parameter is second. DefaultParser = cron.NewParser( cron.SecondOptional | cron.Minute | cron.Hour | cron.Dom | cron.Month | cron.Dow | cron.Descriptor, ) DefaultInterceptors = Chain() DefaultLocation = time.Local )
Default configuration for the manager.
Functions ¶
func GetJobName ¶ added in v1.1.0
GetJobName return the Job name by reflect the job
func NewServer ¶
NewServer creates a new HTTP server. - / => current server status. - /jobs => current jobs as frontend html. - /api/jobs => current jobs as json.
func NewSideCarServer ¶
NewSideCarServer creates a new side car HTTP server. HTTP server will be start automatically. - / => current server status. - /jobs => current jobs as frontend html. - /api/jobs => current jobs as json.
func SetJobMetadata ¶
func SetJobMetadata(ctx context.Context, meta JobMetadata) context.Context
SetJobMetadata stores current job metadata inside current context.
Types ¶
type Func ¶
Func is a type to allow callers to wrap a raw func. Example:
manager.Schedule("@every 5m", cronx.Func(myFunc))
type FuncJob ¶ added in v1.2.0
type FuncJob struct {
// contains filtered or unexported fields
}
FuncJob is a type to allow callers to wrap a raw func with name. Example:
manager.ScheduleFunc("@every 5m", "random name", myFunc)
func NewFuncJob ¶ added in v1.2.0
NewFuncJob creates a wrapper type for a raw func with name.
type Interceptor ¶
Interceptor is the middleware that will be executed before the current handler.
func Chain ¶
func Chain(interceptors ...Interceptor) Interceptor
Chain returns a single interceptor from multiple interceptors.
type Job ¶
type Job struct { JobMetadata Name string `json:"name"` Status StatusCode `json:"status"` Latency string `json:"latency"` Error string `json:"error"` // contains filtered or unexported fields }
func (*Job) UpdateStatus ¶
func (j *Job) UpdateStatus() StatusCode
UpdateStatus updates the current job status to the latest.
type JobMetadata ¶
type JobMetadata struct { EntryID cron.EntryID `json:"entry_id"` Wave int64 `json:"wave"` TotalWave int64 `json:"total_wave"` IsLastWave bool `json:"is_last_wave"` }
func GetJobMetadata ¶
func GetJobMetadata(ctx context.Context) (JobMetadata, bool)
GetJobMetadata returns job metadata from current context, and status if it exists or not.
type Manager ¶ added in v1.1.0
type Manager struct {
// contains filtered or unexported fields
}
Manager controls all the underlying job.
func NewManager ¶ added in v1.1.0
NewManager create a command controller with a specific config.
func (*Manager) GetEntries ¶ added in v1.1.0
func (m *Manager) GetEntries() []cron.Entry
GetEntries returns all the current registered jobs.
func (*Manager) GetEntry ¶ added in v1.1.0
func (m *Manager) GetEntry(id cron.EntryID) *cron.Entry
GetEntry returns a snapshot of the given entry, or nil if it couldn't be found.
func (*Manager) GetStatusData ¶ added in v1.1.0
func (m *Manager) GetStatusData() []StatusData
GetStatusData returns all jobs status.
func (*Manager) GetStatusJSON ¶ added in v1.1.0
StatusJSON returns all jobs status as map[string]interface.
func (*Manager) Remove ¶ added in v1.1.0
func (m *Manager) Remove(id cron.EntryID)
Remove removes a specific job from running. Get EntryID from the list job entries manager.GetEntries(). If job is in the middle of running, once the process is finished it will be removed.
func (*Manager) Schedule ¶ added in v1.1.0
Schedule sets a job to run at specific time. Example:
@every 5m 0 */10 * * * * => every 10m
func (*Manager) ScheduleFunc ¶ added in v1.2.0
ScheduleFunc adds a func to the Cron to be run on the given schedule.
func (*Manager) Schedules ¶ added in v1.1.0
Schedules sets a job to run multiple times at specific time. Symbol */,-? should never be used as separator character. These symbols are reserved for cron specification.
Example:
Spec : "0 0 1 * * *#0 0 2 * * *#0 0 3 * * * Separator : "#" This input schedules the job to run 3 times.
func (*Manager) SchedulesFunc ¶ added in v1.2.0
func (m *Manager) SchedulesFunc(spec, separator, name string, cmd func(ctx context.Context) error) error
SchedulesFunc adds a func to the Cron to be run on the given schedules.
type Option ¶ added in v1.1.0
type Option func(*Manager)
Option represents a modification to the default behavior of the manager.
func WithAutoStartDisabled ¶ added in v1.2.0
func WithAutoStartDisabled() Option
WithAutoStartDisabled prevent the cron job from actually running.
func WithInterceptor ¶ added in v1.1.0
func WithInterceptor(interceptors ...Interceptor) Option
WithChain specifies Job wrappers to apply to all jobs added to this cron.
func WithLocation ¶ added in v1.1.0
WithLocation overrides the timezone of the cron instance.
func WithLowPriorityDownJobs ¶ added in v1.3.0
func WithLowPriorityDownJobs() Option
WithLowPriorityDownJobs puts the down jobs at the bottom of the list.
func WithParser ¶ added in v1.1.0
func WithParser(p cron.Parser) Option
WithParser overrides the parser used for interpreting job schedules.
type ServerController ¶
type ServerController struct { // Manager controls all the underlying job. Manager *Manager }
ServerController is http server controller.
func (*ServerController) APIJobs ¶
func (c *ServerController) APIJobs(ctx echo.Context) error
APIJobs returns job status as json.
func (*ServerController) HealthCheck ¶
func (c *ServerController) HealthCheck(ctx echo.Context) error
HealthCheck returns server status.
func (*ServerController) Jobs ¶
func (c *ServerController) Jobs(ctx echo.Context) error
Jobs return job status as frontend template.
type StatusCode ¶
type StatusCode string
StatusCode describes current job status.
const ( // StatusCodeUp describes that current job has just been created. StatusCodeUp StatusCode = "UP" // StatusCodeIdle describes that current job is waiting for next execution time. StatusCodeIdle StatusCode = "IDLE" // StatusCodeRunning describes that current job is currently running. StatusCodeRunning StatusCode = "RUNNING" // StatusCodeDown describes that current job has failed to be registered. StatusCodeDown StatusCode = "DOWN" // StatusCodeError describes that last run has failed. StatusCodeError StatusCode = "ERROR" )
type StatusData ¶
type StatusData struct { // ID is unique per job. ID cron.EntryID `json:"id,omitempty"` // Job defines current job. Job *Job `json:"job,omitempty"` // Next defines the next schedule to execute current job. Next time.Time `json:"next_run,omitempty"` // Prev defines the last run of the current job. Prev time.Time `json:"prev_run,omitempty"` }
StatusData defines current job status.