From ea96d78d9ea39c11b8e0744eaede0069a49a641f Mon Sep 17 00:00:00 2001 From: VIVIMAN Date: Thu, 5 May 2022 20:19:44 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E5=AE=9A=E6=97=B6=E4=BB=BB?= =?UTF-8?q?=E5=8A=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../data_func/go_to_crontab/demo01/main.go | 20 +++++++++++ .../data_func/go_to_crontab/demo02/main.go | 34 +++++++++++++++++++ .../data_func/go_to_crontab/demo03/main.go | 17 ++++++++++ golang_learn/go.mod | 1 + golang_learn/go.sum | 2 ++ 5 files changed, 74 insertions(+) create mode 100644 golang_learn/data_func/go_to_crontab/demo01/main.go create mode 100644 golang_learn/data_func/go_to_crontab/demo02/main.go create mode 100644 golang_learn/data_func/go_to_crontab/demo03/main.go diff --git a/golang_learn/data_func/go_to_crontab/demo01/main.go b/golang_learn/data_func/go_to_crontab/demo01/main.go new file mode 100644 index 0000000..82a5387 --- /dev/null +++ b/golang_learn/data_func/go_to_crontab/demo01/main.go @@ -0,0 +1,20 @@ +package main + +import ( + "fmt" + "github.com/robfig/cron/v3" +) + +func main() { + crontab := cron.New() + task := func() { + fmt.Println("hello world") + } + // 添加定时任务, * * * * * 是 crontab,表示每分钟执行一次 + _, _ = crontab.AddFunc("* * * * *", task) + // 启动定时器 + crontab.Start() + // 定时任务是另起协程执行的,这里使用 select 简答阻塞.实际开发中需要 + // 根据实际情况进行控制 + select {} +} diff --git a/golang_learn/data_func/go_to_crontab/demo02/main.go b/golang_learn/data_func/go_to_crontab/demo02/main.go new file mode 100644 index 0000000..4e65fff --- /dev/null +++ b/golang_learn/data_func/go_to_crontab/demo02/main.go @@ -0,0 +1,34 @@ +package main + +import ( + "log" + + "github.com/robfig/cron/v3" +) + +type Hello struct { + Str string +} + +func (h Hello) Run() { + log.Println(h.Str) +} + +func main() { + log.Println("Starting...") + + c := cron.New() + h := Hello{"I Love You!"} + // 添加定时任务 + _, _ = c.AddJob("*/2 * * * * * ", h) + // 添加定时任务 + _, _ = c.AddFunc("*/5 * * * * * ", func() { + log.Println("hello word") + }) + + // 其中任务 + c.Start() + // 关闭任务 + defer c.Stop() + select {} +} diff --git a/golang_learn/data_func/go_to_crontab/demo03/main.go b/golang_learn/data_func/go_to_crontab/demo03/main.go new file mode 100644 index 0000000..84355cf --- /dev/null +++ b/golang_learn/data_func/go_to_crontab/demo03/main.go @@ -0,0 +1,17 @@ +package main + +import ( + "github.com/robfig/cron/v3" + "log" +) + +func main() { + c := cron.New() + _, _ = c.AddFunc("@every 5s", timer) + c.Start() + select {} +} + +func timer() { + log.Println("每5s执行一次") +} diff --git a/golang_learn/go.mod b/golang_learn/go.mod index 34f4b90..1539211 100644 --- a/golang_learn/go.mod +++ b/golang_learn/go.mod @@ -30,6 +30,7 @@ require ( github.com/mzky/zip v0.0.0-20210817031838-1b692015aed2 github.com/pingcap/log v0.0.0-20211215031037-e024ba4eb0ee github.com/riftbit/go-systray v1.0.2 + github.com/robfig/cron/v3 v3.0.1 github.com/russross/blackfriday v1.6.0 github.com/shirou/gopsutil v2.20.4+incompatible github.com/spf13/viper v1.8.1 diff --git a/golang_learn/go.sum b/golang_learn/go.sum index 9ee3ae0..81b8bd2 100644 --- a/golang_learn/go.sum +++ b/golang_learn/go.sum @@ -299,6 +299,8 @@ github.com/richardlehane/msoleps v1.0.1 h1:RfrALnSNXzmXLbGct/P2b4xkFz4e8Gmj/0Vj9 github.com/richardlehane/msoleps v1.0.1/go.mod h1:BWev5JBpU9Ko2WAgmZEuiz4/u3ZYTKbjLycmwiWUfWg= github.com/riftbit/go-systray v1.0.2 h1:8cT4UEREfN3NxpErxHC/7G8cR/t/hAiO/nZng5pmSAQ= github.com/riftbit/go-systray v1.0.2/go.mod h1:4Gw5HqutBhqXW3sRq41ggHZZqC1k/KOU4dix6G6frj0= +github.com/robfig/cron/v3 v3.0.1 h1:WdRxkvbJztn8LMz/QEvLN5sBU+xKpSqwwUO1Pjr4qDs= +github.com/robfig/cron/v3 v3.0.1/go.mod h1:eQICP3HwyT7UooqI/z+Ov+PtYAWygg1TEWWzGIFLtro= github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ= github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= github.com/rogpeppe/go-internal v1.6.1 h1:/FiVV8dS/e+YqF2JvO3yXRFbBLTIuSDkuC7aBOAvL+k=