golang cron 延迟执行
时间: 2023-10-02 10:07:26 浏览: 50
在 Golang 中,你可以使用第三方库,如 `robfig/cron` 或 `go-cron/cron` 来实现 cron 作业的延迟执行。
使用 `robfig/cron` 库的示例代码如下:
```go
package main
import (
"fmt"
"time"
"github.com/robfig/cron"
)
func main() {
c := cron.New()
// 定义一个 cron 作业
job := cron.NewChain(
cron.DelayIfStillRunning(cron.DefaultLogger),
).Then(cron.FuncJob(func() {
fmt.Println("Hello, World!")
}))
// 设置作业的调度规则
schedule := "*/1 * * * * *" // 每秒执行一次
c.AddJob(schedule, job)
// 启动 cron 作业
c.Start()
// 延迟程序退出
time.Sleep(5 * time.Second)
// 停止 cron 作业
c.Stop()
}
```
在上面的示例中,我们使用了 `cron.DelayIfStillRunning` 方法来延迟执行作业,这样即使上一个作业还在执行中,下一个作业也会按计划延迟执行。
另外,如果你使用的是 `go-cron/cron` 库,你可以使用 `cron.Delay` 方法来实现延迟执行。具体代码示例如下:
```go
package main
import (
"fmt"
"time"
"github.com/go-cron/cron"
)
func main() {
c := cron.New()
// 定义一个 cron 作业
job := cron.NewChain(
cron.Delay(5*time.Second),
).Then(cron.FuncJob(func() {
fmt.Println("Hello, World!")
}))
// 设置作业的调度规则
schedule := "*/1 * * * * *" // 每秒执行一次
c.AddJob(schedule, job)
// 启动 cron 作业
c.Start()
// 延迟程序退出
time.Sleep(10 * time.Second)
// 停止 cron 作业
c.Stop()
}
```
以上是两个常用的库来实现 golang cron 延迟执行的方法,你可以根据自己的实际需求选择使用。