Categorygithub.com/golang-acexy/starter-cron

# README

starter-cron

基于github.com/robfig/cron封装的定时任务调度组件


功能说明

  • 新增支持同一任务执行中忽略下次调度设置
func TestAddSimpleSingletonJob(t *testing.T) {
	cronstrater.AddSimpleSingletonJob("@every 1s", func() {
		fmt.Println(time.Now().Format("15:04:05"), "执行中")
		time.Sleep(time.Second * 5)
		atomic.AddInt32(&count2, 1)
		fmt.Println(time.Now().Format("15:04:05"), "执行完成")
	})
	time.Sleep(time.Second * 30)
	fmt.Println("init func invoke count", count1, "AddJob invoke count", count2)
}
  • 支持执行中的定时任务动态刷新执行计划(下次执行中触发)
func TestJobsFlushSpec(t *testing.T) {

	spec1 := "@every 1s"
	spec2 := "@every 1s"

	task1 := cronstrater.NewJob("task1", &spec1, false, func() {
		fmt.Println("task1 invoke", time.Now().Format("15:04:05"))
	})

	task2 := cronstrater.NewJob("task2", &spec2, false, func() {
		fmt.Println("task2 invoke", time.Now().Format("15:04:05"))
		time.Sleep(2 * time.Second)
	}, true)

	_ = task1.Register()
	_ = task2.Register()
	time.Sleep(time.Second * 10)

	_ = task1.FlushSpec("@every 1s")
	_ = task2.FlushSpec("@every 1s")

	time.Sleep(time.Second * 10)
}

func TestJobAutoFlushSpec(t *testing.T) {
	spec1 := "@every 1s"
	_ = cronstrater.NewJobAndRegister("task1", &spec1, true, func() {
		fmt.Println("task1 invoke", time.Now().Format("15:04:05"))
	}, false)

	go func() {
		time.Sleep(time.Second * 5)
		spec1 = "@every 2s"
		time.Sleep(time.Second * 5)
		spec1 = "@every 3s"
		time.Sleep(time.Second * 5)
		spec1 = "@every 4s"
	}()

	time.Sleep(time.Second * 30)
}

# Packages

No description provided by the author
No description provided by the author