Golang实现定时任务

作者: adm 分类: go 发布时间: 2022-09-16

Golang实现定时任务

package main

import (
	"fmt"

	"github.com/robfig/cron/v3"
)

func main() {
	// 每天凌晨0点执行一次:0 0 0 * * ?
	// 每隔3秒执行一次:*/3 * * * * *
	// spec := "*/3 * * * * *"

	spec := "* * * * *"
	c := cron.New(cron.WithSeconds())
	c.AddFunc(spec, func() {
		fmt.Println("execute")
	})
	go c.Start()
	defer c.Stop()
	select {}
}

启动多个任务

type TestJob struct {
}

func (this TestJob)Run() {
    fmt.Println("testJob1...")
}

type Test2Job struct {
}

func (this Test2Job)Run() {
    fmt.Println("testJob2...")
}

//启动多个任务
func main() {
    i := 0
    c := cron.New()

    //AddFunc
    spec := "*/5 * * * * ?"
    c.AddFunc(spec, func() {
        i++
        fmt.Println("cron running:", i)
    })

    //AddJob方法
    c.AddJob(spec, TestJob{})
    c.AddJob(spec, Test2Job{})

    //启动计划任务
    c.Start()

    //关闭着计划任务, 但是不能关闭已经在执行中的任务.
    defer c.Stop()

    select{}
}

如果觉得我的文章对您有用,请随意赞赏。您的支持将鼓励我继续创作!