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 NewStatusDataSorter(key sortx.Key, order sortx.Order, data []StatusData) sort.Interface
- func SetJobMetadata(ctx context.Context, meta JobMetadata) context.Context
- type Alerter
- type AlerterItf
- type Func
- type FuncJob
- type Handler
- type HistoryPageData
- 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) GetHistoryData(ctx context.Context, req *Request) (HistoryPageData, error)
- func (m *Manager) GetInfo() map[string]interface{}
- func (m *Manager) GetStatusData(sortQuery string) StatusPageData
- 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
- func WithAlerter(client AlerterItf) Option
- func WithAutoStartDisabled() Option
- func WithInterceptor(interceptors ...Interceptor) Option
- func WithLocation(loc *time.Location) Option
- func WithLowPriorityDownJobs() Option
- func WithParser(p cron.ScheduleParser) Option
- func WithStorage(client storage.Client) Option
- type Request
- type Response
- type ServerController
- func (c *ServerController) APIHistories(ctx echo.Context) error
- func (c *ServerController) APIJobs(ctx echo.Context) error
- func (c *ServerController) HealthCheck(ctx echo.Context) error
- func (c *ServerController) Histories(ctx echo.Context) error
- func (c *ServerController) Jobs(ctx echo.Context) error
- type StatusCode
- type StatusData
- type StatusPageData
Constants ¶
const ( SortKeyID sortx.Key = "id" SortKeyName sortx.Key = "name" SortKeyStatus sortx.Key = "status" SortKeyPrevRun sortx.Key = "prev_run" SortKeyNextRun sortx.Key = "next_run" SortKeyLatency sortx.Key = "latency" )
const (
// CtxKeyJobMetadata is context for cron job metadata.
CtxKeyJobMetadata = contextKey("cron-job-metadata")
)
Context key for standardized context value.
const (
QueryParamSort = "sort"
)
const SleepDuration = time.Second * 10
SleepDuration defines the duration to sleep the server if the defined address is busy.
Variables ¶
var ( // DefaultParser supports 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 DefaultStorage = storage.NewNoopClient() DefaultAlerter = NewAlerter() )
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 sidecar HTTP server. HTTP server will be start automatically. - / => current server status. - /jobs => current jobs as frontend html. - /api/jobs => current jobs as json.
func NewStatusDataSorter ¶ added in v1.4.0
func SetJobMetadata ¶
func SetJobMetadata(ctx context.Context, meta JobMetadata) context.Context
SetJobMetadata stores current job metadata inside current context.
Types ¶
type Alerter ¶ added in v1.8.0
type Alerter struct{}
func NewAlerter ¶ added in v1.8.0
func NewAlerter() *Alerter
type AlerterItf ¶ added in v1.8.0
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 HistoryPageData ¶ added in v1.7.0
type HistoryPageData struct { Data []storage.History `json:"data"` Pagination Response `json:"pagination"` Sort pagination.Sort `json:"sort"` }
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"` PrevRun time.Time `json:"-"` NextRun time.Time `json:"-"` // contains filtered or unexported fields }
func (*Job) RecordHistory ¶ added in v1.6.0
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) GetHistoryData ¶ added in v1.6.0
GetHistoryData returns run histories for history page.
func (*Manager) GetStatusData ¶ added in v1.1.0
func (m *Manager) GetStatusData(sortQuery string) StatusPageData
GetStatusData returns all jobs status for status page.
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 WithAlerter ¶ added in v1.10.0
func WithAlerter(client AlerterItf) Option
WithAlerter determines the alerter used to send notification for high latency job run detected.
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
WithInterceptor 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.ScheduleParser) Option
WithParser overrides the parser used for interpreting job schedules.
func WithStorage ¶ added in v1.6.0
WithStorage determines the reader and writer for historical data.
type Request ¶ added in v1.7.0
type Request struct { // Sort of the resources in the response e.g. sort=id:desc,created_at:desc // Sort is optional. Sort string `query:"sort" form:"sort" json:"sort" xml:"sort"` // Limit number of results per call. // Limit is optional. Limit int `query:"limit" form:"limit" json:"limit" xml:"limit"` // StartingAfter is a cursor for use in pagination. // StartingAfter is a resource ID that defines your place in the list. // StartingAfter is optional. StartingAfter *int64 `query:"starting_after" form:"starting_after" json:"starting_after" xml:"starting_after"` // EndingBefore is cursor for use in pagination. // EndingBefore is a resource ID that defines your place in the list. // EndingBefore is optional. EndingBefore *int64 `query:"ending_before" form:"ending_before" json:"ending_before" xml:"ending_before"` // contains filtered or unexported fields }
Request is a parameter to return list of data with pagination. Request is optional, most fields automatically filled by system. If you already have a response with pagination, you can generate pagination request directly to traverse next or prev page.
func (*Request) QueryParams ¶ added in v1.7.0
type Response ¶ added in v1.7.0
type Response struct { Sort string `query:"sort" form:"sort" json:"sort" xml:"sort"` StartingAfter *int64 `query:"starting_after" form:"starting_after" json:"starting_after" xml:"starting_after"` EndingBefore *int64 `query:"ending_before" form:"ending_before" json:"ending_before" xml:"ending_before"` Total int `query:"total" form:"total" json:"total" xml:"total"` Yielded int `query:"yielded" form:"yielded" json:"yielded" xml:"yielded"` Limit int `query:"limit" form:"limit" json:"limit" xml:"limit"` PreviousURI *string `query:"previous_uri" form:"previous_uri" json:"previous_uri" xml:"previous_uri"` NextURI *string `query:"next_uri" form:"next_uri" json:"next_uri" xml:"next_uri"` // CursorRange returns cursors for starting after and ending before. // Format: [starting_after, ending_before]. CursorRange []int64 `query:"cursor_range" form:"cursor_range" json:"cursor_range" xml:"cursor_range"` }
func (*Response) HasNextPage ¶ added in v1.7.0
HasNextPage returns true if next page exists and can be traversed.
func (*Response) HasPrevPage ¶ added in v1.7.0
HasPrevPage returns true if prev page exists and can be traversed.
func (*Response) NextPageCursor ¶ added in v1.7.0
NextPageCursor returns cursor to be used as starting after value.
func (*Response) NextPageRequest ¶ added in v1.7.0
NextPageRequest returns pagination request for the next page result.
func (*Response) PrevPageCursor ¶ added in v1.7.0
PrevPageCursor returns cursor to be used as ending before value.
func (*Response) PrevPageRequest ¶ added in v1.7.0
PrevPageRequest returns pagination request for the prev page result.
type ServerController ¶
type ServerController struct { // Manager controls all the underlying job. Manager *Manager }
ServerController is http server controller.
func (*ServerController) APIHistories ¶ added in v1.6.0
func (c *ServerController) APIHistories(ctx echo.Context) error
APIHistories returns run histories as json.
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) Histories ¶ added in v1.8.0
func (c *ServerController) Histories(ctx echo.Context) error
Histories return job history as frontend template.
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" // StatusCodeSuccess describes that current job is waiting for next execution time. StatusCodeSuccess StatusCode = "SUCCESS" // 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" )
func (StatusCode) String ¶ added in v1.6.0
func (s StatusCode) String() string
type StatusData ¶
type StatusData struct { // ID is unique per job. ID cron.EntryID `json:"id"` // Job defines current job. Job *Job `json:"job"` // Next defines the next schedule to execute current job. Next time.Time `json:"next"` // Prev defines the last run of the current job. Prev time.Time `json:"prev"` }
StatusData defines current job status.
type StatusPageData ¶ added in v1.5.0
type StatusPageData struct { Data []StatusData `json:"data"` Sort pagination.Sort `json:"sort"` }