Documentation
      ¶
    
    
  
    
  
    Index ¶
- Constants
 - Variables
 - func DeleteTask(id string)
 - func IsEnded(status string) bool
 - func MustGetString(ctx context.Context, key string) string
 - func RegisterScheduleTask(task ScheduleTask) (taskID string)
 - func RunTasks()
 - func RunWithContext(tag string, f func(ctx context.Context) error, ctxInput context.Context) (taskID string)
 - func RunWithinGroup(groupName string, f func(ctx context.Context) error) (taskID string)
 - func RunWithinGroupWithContext(groupName string, ctx context.Context, f func(ctx context.Context) error) (taskID string)
 - func StartTask(id string)
 - func StopAllTasks()
 - func StopTask(id string)
 - func StopTasks()
 - type Metadata
 - type ScheduleTask
 - type State
 - type Task
 - type TaskResult
 
Constants ¶
      View Source
      
  
    const ( StatusRunning = "running" StatusComplete = "complete" StatusError = "error" StatusReady = "ready" StatusInit = "init" StatusPendingStop = "pending_stop" StatusStopped = "stopped" )
      View Source
      
  
    const ( Pending State = "PENDING" Running State = "STARTED" Canceled = "CANCELED" Finished = "FINISHED" )
      View Source
      
  
    const Crontab = "crontab"
    
      View Source
      
  
    const Interval = "interval"
    
      View Source
      
  
const Transient = "transient"
    Variables ¶
      View Source
      
  
var Tasks = sync.Map{}
    Functions ¶
func DeleteTask ¶
func DeleteTask(id string)
func RegisterScheduleTask ¶
func RegisterScheduleTask(task ScheduleTask) (taskID string)
func RunWithContext ¶
func RunWithinGroup ¶
func RunWithinGroupWithContext ¶ added in v1.1.4
func StopAllTasks ¶
func StopAllTasks()
Types ¶
type ScheduleTask ¶
type ScheduleTask struct {
	ID          string     `config:"id" json:"id,omitempty"`
	Group       string     `config:"group" json:"group,omitempty"`
	Description string     `config:"description" json:"description,omitempty"`
	Type        string     `config:"type" json:"type,omitempty"`
	Interval    string     `config:"interval" json:"interval,omitempty"`
	Crontab     string     `config:"crontab" json:"crontab,omitempty"`
	CreateTime  time.Time  `config:"create_time" json:"create_time,omitempty"`
	StartTime   *time.Time `config:"start_time" json:"start_time,omitempty"`
	EndTime     *time.Time `config:"end_time" json:"end_time,omitempty"`
	// Ensures the task runs as a singleton, preventing duplicate executions when previous attempt is not finished.
	Singleton bool `config:"singleton" json:"singleton,omitempty"`
	Task func(ctx context.Context) `config:"-" json:"-"`
	State State           `config:"state" json:"state,omitempty"`
	Ctx   context.Context `config:"-" json:"-"` //for transient task
	Cancel context.CancelFunc `config:"-" json:"-"`
	// contains filtered or unexported fields
}
    type Task ¶
type Task struct {
	orm.ORMObjectBase
	ParentId          []string   `json:"parent_id,omitempty" elastic_mapping:"parent_id: { type: keyword }"`
	StartTimeInMillis int64      `json:"start_time_in_millis" elastic_mapping:"start_time_in_millis: { type: long }"`
	Cancellable       bool       `json:"cancellable" elastic_mapping:"cancellable: { type: boolean }"`
	Runnable          bool       `json:"runnable" elastic_mapping:"runnable: { type: boolean }"`
	Metadata          Metadata   `json:"metadata" elastic_mapping:"metadata: { type: object }"`
	Status            string     `json:"status"  elastic_mapping:"status: { type: keyword }"`
	Description       string     `json:"description,omitempty" elastic_mapping:"description: { type: text }"`
	ConfigString      string     `json:"config_string" elastic_mapping:"config_string:{ type: text }"`
	CompletedTime     *time.Time `json:"completed_time,omitempty" elastic_mapping:"completed_time: { type: date }"`
	RetryTimes        int        `json:"retry_times,omitempty" elastic_mapping:"retry_times: { type: integer }"`
	// DEPRECATED: used by old tasks
	Config_ interface{} `json:"config,omitempty" elastic_mapping:"config:{type: object,enabled:false }"`
}
    type TaskResult ¶
 Click to show internal directories. 
   Click to hide internal directories.