近期在學習Golang ,想通過Golang 實現一個Crontab 的管理。雖然github 已經有很多成熟的輪子可以使用。但是還是只有自己的輪子,玩起來才最放心。計划golang 的cron 使用三部分構成,client ,server ,web 端。其中server 端提供定時任務的分發控制,以及監控各個client 的健康狀況。Client 端復制執行具體的任務,並且上報日志。web 端根據Server 端提供的RestFul API 來渲染管理后台。
package main
import (
"fmt"
"sync"
"time"
)
/**
創建一個定時器
*/
func main() {
ticker := time.NewTicker(1*time.Second)
quit := make(chan int)
var wg sync.WaitGroup
wg.Add(1)
go func(){
defer wg.Done()
fmt.Println("child goroutine bootstramp start")
for {
select {
case <-ticker.C:
fmt.Println("ticker.")
case <-quit:
fmt.Println("work well")
ticker.Stop()
return
}
}
fmt.Println("child goroutine bootstramp end")
}()
time.Sleep(10 * time.Second)
quit<- 1
wg.Wait()
}