Documentation ¶
Index ¶
- Variables
- func DeleteInstance(key string)
- func DeserializeTask(job *Job) error
- func DeserializeTrigger(job *Job) error
- func GenAGSDetails() logrus.Fields
- func GenAGSVersion() logrus.Fields
- func GenASGModule(module string) logrus.Fields
- func IncreaseInstance(key string) int
- func NewPG() *pg.DB
- func ReduceInstance(key string) int
- func RegisterAllTasks(tasks ...ITask)
- func SerializeTask(job *Job) error
- func SerializeTrigger(job *Job) error
- type AGSConfig
- type AGScheduler
- func (ags *AGScheduler) AddJob(jobs ...*Job) (err error)
- func (ags *AGScheduler) Close() error
- func (ags *AGScheduler) DelJob(jobs ...*Job) (err error)
- func (ags *AGScheduler) FillByDefault()
- func (ags *AGScheduler) GetAllJobs() (jobs []*Job, err error)
- func (ags *AGScheduler) GetJobByJobName(jobName string) (job *Job, err error)
- func (ags *AGScheduler) Pause()
- func (ags *AGScheduler) Start()
- func (ags *AGScheduler) UpdateJob(jobs ...*Job) (err error)
- func (ags *AGScheduler) WaitWithTime(waitTime time.Time)
- func (ags *AGScheduler) Wake()
- type CronTrigger
- type DateTrigger
- type IStore
- type ITask
- type ITrigger
- type IntervalTrigger
- type Job
- type LogConfig
- type MemoryStore
- func (ms *MemoryStore) AddJob(job *Job) error
- func (ms *MemoryStore) DelJob(job *Job) error
- func (ms *MemoryStore) FillByDefault()
- func (ms *MemoryStore) GetAllJobs() ([]*Job, error)
- func (ms *MemoryStore) GetJobByName(name string) (*Job, error)
- func (ms *MemoryStore) GetNextRunTime() (time.Time, error)
- func (ms *MemoryStore) GetSchedulingJobs(now time.Time) ([]*Job, error)
- func (ms *MemoryStore) UpdateJob(job *Job) error
- type Options
- type PGConfig
- type PostgresStore
- func (ps *PostgresStore) AddJob(job *Job) error
- func (ps *PostgresStore) DelJob(job *Job) error
- func (ps *PostgresStore) FillByDefault()
- func (ps *PostgresStore) GetAllJobs() ([]*Job, error)
- func (ps *PostgresStore) GetJobByName(name string) (*Job, error)
- func (ps *PostgresStore) GetNextRunTime() (time.Time, error)
- func (ps *PostgresStore) GetSchedulingJobs(now time.Time) ([]*Job, error)
- func (ps *PostgresStore) UpdateJob(job *Job) error
- type STATUS
- type TriggerMeta
Constants ¶
This section is empty.
Variables ¶
View Source
var ( MaxTolerance = 1024 InstanceLock = sync.Mutex{} InstanceMap = map[string]int{} )
View Source
var ( AGSLog = logrus.New() Log = AGSLog.WithFields(GenAGSVersion()) )
View Source
var ( STATUS_RUNNING = STATUS("RUNNING") STATUS_PAUSED = STATUS("PAUSED") STATUS_STOPPED = STATUS("STOPPED") )
View Source
var ( MinDateTime = time.Time{} MaxDateTime = time.Now().Add(time.Duration(math.MaxInt64)) )
View Source
var ( Version = "0.0.1" Author = "https://github.com/CzaOrz" GitHub = "https://github.com/CzaOrz/agscheduler" GitBook = "https://github.com/CzaOrz/agscheduler/blob/main/README.md" Email = "972542655@qq.com" )
View Source
var (
AGSContext = context.Background()
)
View Source
var JobsMapLock = sync.Mutex{}
View Source
var PG *pg.DB
Functions ¶
func DeleteInstance ¶
func DeleteInstance(key string)
func DeserializeTask ¶
func DeserializeTrigger ¶
func GenAGSDetails ¶
func GenAGSVersion ¶
func GenASGModule ¶
func IncreaseInstance ¶
func ReduceInstance ¶
func RegisterAllTasks ¶
func RegisterAllTasks(tasks ...ITask)
func SerializeTask ¶
func SerializeTrigger ¶
Types ¶
type AGScheduler ¶
type AGScheduler struct { Store IStore Logger *logrus.Entry Status STATUS // context. Context context.Context WaitCancel context.CancelFunc }
func (*AGScheduler) AddJob ¶
func (ags *AGScheduler) AddJob(jobs ...*Job) (err error)
func (*AGScheduler) Close ¶
func (ags *AGScheduler) Close() error
func (*AGScheduler) DelJob ¶
func (ags *AGScheduler) DelJob(jobs ...*Job) (err error)
func (*AGScheduler) FillByDefault ¶
func (ags *AGScheduler) FillByDefault()
func (*AGScheduler) GetAllJobs ¶
func (ags *AGScheduler) GetAllJobs() (jobs []*Job, err error)
func (*AGScheduler) GetJobByJobName ¶
func (ags *AGScheduler) GetJobByJobName(jobName string) (job *Job, err error)
func (*AGScheduler) Pause ¶
func (ags *AGScheduler) Pause()
func (*AGScheduler) Start ¶
func (ags *AGScheduler) Start()
func (*AGScheduler) UpdateJob ¶
func (ags *AGScheduler) UpdateJob(jobs ...*Job) (err error)
func (*AGScheduler) WaitWithTime ¶
func (ags *AGScheduler) WaitWithTime(waitTime time.Time)
func (*AGScheduler) Wake ¶
func (ags *AGScheduler) Wake()
type CronTrigger ¶
type CronTrigger struct { CronCmd string `json:"cron_cmd"` StartRunTime time.Time `json:"start_run_time"` EndRunTime time.Time `json:"end_run_time"` CronIns cron.Schedule `json:"-"` }
func (*CronTrigger) GetNextRunTime ¶
func (t *CronTrigger) GetNextRunTime(previous, now time.Time) time.Time
type DateTrigger ¶
func (DateTrigger) GetNextRunTime ¶
func (t DateTrigger) GetNextRunTime(previous, now time.Time) time.Time
if previous is empty, return NextRunTime directly
type IStore ¶
type IStore interface { GetSchedulingJobs(now time.Time) ([]*Job, error) GetJobByName(name string) (*Job, error) GetAllJobs() ([]*Job, error) AddJob(job *Job) error DelJob(job *Job) error UpdateJob(job *Job) error GetNextRunTime() (time.Time, error) }
GetSchedulingJobs: get jobs which should be scheduled now. GetJobByName: find job by name. GetNextRunTime: get the first schedule time from all jobs.
type ITrigger ¶
GetNextRunTime: if result is MinDateTime, it mean this Job is over, should be delete.
type IntervalTrigger ¶
type IntervalTrigger struct { Interval time.Duration `json:"interval"` StartRunTime time.Time `json:"start_run_time"` EndRunTime time.Time `json:"end_run_time"` }
func (IntervalTrigger) GetNextRunTime ¶
func (t IntervalTrigger) GetNextRunTime(previous, now time.Time) time.Time
type Job ¶
type Job struct { Id int `json:"id" pg:",pk"` Name string `json:"name" pg:",use_zero,unique"` Task ITask `json:"-" pg:"-"` Trigger ITrigger `json:"-" pg:"-"` Status STATUS `json:"status" pg:",use_zero"` NotCoalesce bool `json:"not_coalesce" pg:",use_zero"` MaxInstances int `json:"max_instances" pg:",use_zero"` DelayGraceTime time.Duration `json:"delay_grace_time" pg:",use_zero"` Scheduler AGScheduler `json:"-" pg:"-"` NextRunTime time.Time `json:"next_run_time" pg:",use_zero"` Logger *logrus.Entry `json:"-" pg:"-"` TriggerMeta TriggerMeta `json:"trigger_meta" pg:",use_zero"` TaskMeta map[string]interface{} `json:"task_meta" pg:",use_zero"` // contains filtered or unexported fields }
func (*Job) FillByDefault ¶
func (j *Job) FillByDefault()
type MemoryStore ¶
func (*MemoryStore) AddJob ¶
func (ms *MemoryStore) AddJob(job *Job) error
func (*MemoryStore) DelJob ¶
func (ms *MemoryStore) DelJob(job *Job) error
func (*MemoryStore) FillByDefault ¶
func (ms *MemoryStore) FillByDefault()
func (*MemoryStore) GetAllJobs ¶
func (ms *MemoryStore) GetAllJobs() ([]*Job, error)
func (*MemoryStore) GetJobByName ¶
func (ms *MemoryStore) GetJobByName(name string) (*Job, error)
func (*MemoryStore) GetNextRunTime ¶
func (ms *MemoryStore) GetNextRunTime() (time.Time, error)
func (*MemoryStore) GetSchedulingJobs ¶
func (ms *MemoryStore) GetSchedulingJobs(now time.Time) ([]*Job, error)
func (*MemoryStore) UpdateJob ¶
func (ms *MemoryStore) UpdateJob(job *Job) error
type PostgresStore ¶
func (*PostgresStore) AddJob ¶
func (ps *PostgresStore) AddJob(job *Job) error
func (*PostgresStore) DelJob ¶
func (ps *PostgresStore) DelJob(job *Job) error
func (*PostgresStore) FillByDefault ¶
func (ps *PostgresStore) FillByDefault()
func (*PostgresStore) GetAllJobs ¶
func (ps *PostgresStore) GetAllJobs() ([]*Job, error)
func (*PostgresStore) GetJobByName ¶
func (ps *PostgresStore) GetJobByName(name string) (*Job, error)
func (*PostgresStore) GetNextRunTime ¶
func (ps *PostgresStore) GetNextRunTime() (time.Time, error)
func (*PostgresStore) GetSchedulingJobs ¶
func (ps *PostgresStore) GetSchedulingJobs(now time.Time) ([]*Job, error)
func (*PostgresStore) UpdateJob ¶
func (ps *PostgresStore) UpdateJob(job *Job) error
type STATUS ¶
type STATUS string
func (*STATUS) SetRunning ¶
func (s *STATUS) SetRunning()
func (*STATUS) SetStopped ¶
func (s *STATUS) SetStopped()
Click to show internal directories.
Click to hide internal directories.