使用go-cron工作时,同时启动多个服务,同时执行多个cron任务?

sqougxex  于 2022-12-31  发布在  Go
关注(0)|答案(1)|浏览(241)

使用go-cron工作时,同时启动多个服务,同时执行多个cron任务,如何保证cron任务只执行一次?
我的cron表达式是[0 2 */1 * *]

bf1o4zei

bf1o4zei1#

您可以为任务配置SingletonMode,以防止在前一个作业尚未完成时启动新作业:

s := gocron.NewScheduler(time.UTC)
    _, _ = s.Every(1).Second().SingletonMode().Do(task)

https://pkg.go.dev/github.com/go-co-op/gocron#Scheduler.SingletonMode
或者启用SingletonModeAll以防止在特定作业的前一个示例尚未完成时启动新作业:

s := gocron.NewScheduler(time.UTC)
    s.SingletonModeAll()

    _, _ = s.Every(1).Second().Do(task)

https://pkg.go.dev/github.com/go-co-op/gocron#Scheduler.SingletonModeAll

相关问题