亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > Golang > 正文

Go語言中定時器cron的基本使用教程

2020-04-01 18:59:42
字體:
來源:轉載
供稿:網友

cron是什么

cron的意思就是:計劃任務,說白了就是定時任務。我和系統約個時間,你在幾點幾分幾秒或者每隔幾分鐘跑一個任務(job),就那么簡單。

前言

cron 是 robfig 開發的一個定時作業庫,robfig 總是想的比別人早,給了我們這些 Gopher 不少急需的東西,想當年 revel 的出現也是這樣的。看看 cron 的使用,還是一如既往的簡潔明了,發現 Go 的世界里,有些產品還是有鮮明的個人特質的,那就是所謂的個人魅力吧?!

總之 robfig 開發的產品都是有一定超前性,比較有理論基礎,使用起來很簡單的東西。

下面看看怎么用 cron 吧:

c := cron.New()c.AddFunc("0 30 * * * *", func() { fmt.Println("Every hour on the half hour") })c.AddFunc("@hourly", func() { fmt.Println("Every hour") })c.AddFunc("@every 1h30m", func() { fmt.Println("Every hour thirty") })c.Start()

首先實例化一個 cron 對象 c,然后調用實例 c 的 AddFunc 函數,AddFunc 函數接收一個定時表達式和一個普通函數,最后開始執行實例,定時作業就好了。

首先接收的普通函數,就是我們業務的東西了,比如我們想打印 Hello World! 一行字符串,我們這么寫這樣的函數:

func PrintSomeWord(){fmt.Sprint("Hello World!")}

PrintSomeWord 寫好了,接下來想每秒鐘打印一次,這時 cron 就派上用場了:

c := cron.New()c.AddFunc("@every 1s",PrintSomeWord)c.Start()

這么說來,普通函數是隨我們的業務決定的,我們暫且不談了,而定時表達式才是我們要學習的東西。我們從 cron 的名字,很容易聯想到 Linux 系統的 cron 定時器來,它們是不是存在一定的關系呢?從下面的使用情況來看,答案是的。仔細看它們的定時表達式是非常相似的,這樣就好辦了,大大降低了使用 cron 的門檻,畢竟 Linux 的 cron 是一個標準來的。

我們看看 cron 普通的表達式:

c.AddFunc("@every 1h30m", func() { fmt.Println("Every hour thirty") })c.AddFunc("@daily", func() { fmt.Println("Every day") })c.AddFunc("@hourly", func() { fmt.Println("Every hour") })

這三行代碼的定時表達式分別表示:每1小時30分鐘執行一次,每天執行一次,每小時執行一次。

@every 很廣,修改后綴,就可以表示不同的用途,比如 秒 分 小時 天,看看代碼:

@every 1s@every 1m@every 1h@every 1d

怎么樣很有規律吧?

更往深一點,可能就是嫌棄 @every 還不夠簡潔了,比如:

@every 1h@every 1d@every 30d

每小時 每天 每月 完全可以不用后綴了:

@hourly@daily@monthly

當然簡潔是好的,但簡潔的同時往往也有些無法做到簡潔的情況,比如上面提到的:

@every 1h30m

不用后綴是不行了吧?

最不好理解的可能是以下的表達式了,因為看這種表達式,就好比看一堆正則表達式一樣,讓一般人懵逼:

c.AddFunc("0 30 * * * *", func() { fmt.Println("Every hour on the half hour") })

定時表達式 0 30 * * * * 到底是什么意思?。康谝挥∠?,毫無規律性,不知道什么意思,如果翻譯 Every hour on the half hour 這句洋文,倒是有點概念了,意思就是“每一小時半(1.5個小時)執行一次” 嘛!?。?/p>

額,看到0 30和六個占位數,推理一下:是不是 秒 分 時 天 月 年 ?。克坪跤忻济?,我也想知道這個表達式的具體使用辦法,只能下次認真學習后,一起說道說道了。

Go 定時器 cron 表達式的使用

如果想更靈活的使用定時,可能會涉及到更復雜的六位表達式的使用方法,如每半小時執行一次:

0 30 * * * *

六位的表達式看起來,有點費解,好比正則表達式一樣,我們需要按步驟來理解;

理解六個作用域的意義

0 0 0 1 1 *0 0 0 1 * *0 0 0 * * 00 0 0 * * *0 0 * * * *

如上表達式,都是六位占位符,可以是數字和字符,其中字符是特定字符包括:【* / , - ? JAN-DEC SUN-SAT】

我們叫它為六個作用域吧,從左到右的順序,代表的含義是 秒鐘域(1) 分鐘域(2) 小時域(3) 日期域(4) 月份域(5) 星期域(6)

月份域可以使用 JAN-DEC 和星期域可以使用SUN-SAT,分別表示 1-12月的英文縮寫和星期一至星期日的英文簡寫,如果不了解月份和星期英文簡寫,建議使用數字表示,因為這個需要記憶和大小寫敏感的,容易出錯。

下面列出方便理解:

1至12月份的英文簡寫:Jan Feb Mar Apr May Jun Jul Aug Sept Oct Nov Dec

星期一至星期日的英文簡寫:Mon Tues Wed Thurs Fri Sat Sun

六個作用域還可以使用的特定字符:

特定字符星號( *)

星號表示匹配所有合理的值,可以存在任何域。比如第月份域(5)的位置使用星號*,表示每個月都執行;同理在星期域(6)的位置使用星號,表示每個星期都執行;其他占位使用它以此類推。

特定字符斜劃線 (/)

斜劃線通常用于一個范圍增量,可以存在任何域。比如在分鐘域(2)的位置使用 3-59/15 表示一個小時的第3分鐘到59分鐘時間范圍內,每15分鐘執行一次。

特定字符逗號 (,)

逗號用于分隔多個點,可以存在任何域。比如在星期域(6)的位置使用 MON,WED,FRI 表示星期一、星期三、星期五這三個點都滿足條件。

特定字符中橫杠 (-)

中橫杠通常用于定義范圍,可以存在任何域。 例如小時域(3)的位置使用 9-17 表示起始9點到截止17點這個時間段范圍。

特定字符問號 (?)

問號表示不確定一個點的意思,只能在日期域(4) 星期域(6)的位置使用,表示指定的值不確定性,一個表達式中只能用一次問號?,如果在日期域(4)使用了,就不能再星期域(6)上用了。它和星號是有區別的,星號表示匹配所有點,就是說一個月哪一天,哪個星期都可以,而問號,表示一個月的不確定哪一天或是一周不確定哪一天都行,這個是很難理解的,需要說一些具體的情況來解釋,比如2月的第18天,剛好是第三周的第2天,那么如果在日期域(4)定義18,星期域(6)定義2這樣就重疊定義了,這個 cron 是不允許的。

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,如果有疑問大家可以留言交流,謝謝大家對VEVB武林網的支持。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲va码欧洲m码| 亚洲免费av网址| 一本色道久久88综合亚洲精品ⅰ| 91欧美精品午夜性色福利在线| 国产日韩欧美视频| 欧美视频裸体精品| 免费av在线一区| 欧美精品aaa| 欧美丰满片xxx777| 精品亚洲va在线va天堂资源站| 一区二区三区www| 久久全球大尺度高清视频| 欧美体内谢she精2性欧美| 成人精品一区二区三区电影黑人| 欧美日韩精品中文字幕| 91精品啪在线观看麻豆免费| 欧美成人激情视频| 91老司机精品视频| 精品视频—区二区三区免费| 欧美激情按摩在线| 福利精品视频在线| 国产成人久久精品| 日韩精品在线视频| 国产久一一精品| 一区二区三区美女xx视频| 国产精品三级美女白浆呻吟| 45www国产精品网站| 精品久久久久久久久久久| 亚洲欧美中文日韩v在线观看| 欧美尤物巨大精品爽| 日韩精品久久久久久福利| 亚洲人成啪啪网站| 亚洲18私人小影院| 欧美午夜电影在线| 国产精品欧美日韩一区二区| 亚洲欧美激情四射在线日| 欧美xxxx18性欧美| 不卡在线观看电视剧完整版| 中文字幕亚洲一区二区三区五十路| 欧美黑人极品猛少妇色xxxxx| 中文字幕精品在线视频| 久久在线精品视频| 亚洲国产又黄又爽女人高潮的| 国自产精品手机在线观看视频| 日韩精品免费在线播放| 91精品国产91久久久久福利| 国产亚洲a∨片在线观看| 欧美最猛性xxxx| 国产精品96久久久久久| 欧美亚洲另类在线| 国产精品人成电影在线观看| 中文在线资源观看视频网站免费不卡| 伊人伊成久久人综合网小说| 国产精品久久久久久久久久新婚| 性金发美女69hd大尺寸| 亚洲黄色av网站| 亚洲mm色国产网站| 欧美精品免费看| 国产精品男人的天堂| 亚洲欧美在线播放| 国产精品永久免费在线| 亚洲欧美日韩天堂| 亚洲国产成人久久综合一区| 91精品国产高清久久久久久久久| 欧美裸体男粗大视频在线观看| 亚洲人av在线影院| 日韩黄色在线免费观看| 日本高清不卡的在线| 日韩av网站在线| 日韩在线观看精品| 国产精品久久久999| 欧美午夜影院在线视频| 亚洲午夜精品久久久久久久久久久久| 91色p视频在线| 91在线中文字幕| 欧美黄色片免费观看| 91精品国产成人| 欧美精品手机在线| 亚洲欧美日韩国产中文| 欧美日本中文字幕| 欧美精品电影在线| 浅井舞香一区二区| 亚洲一区国产精品| 97精品视频在线| 亚洲国产欧美一区二区三区同亚洲| 日韩女优在线播放| 日本不卡视频在线播放| 欧美成人中文字幕在线| 国产精品美女视频网站| 亚洲毛茸茸少妇高潮呻吟| 亚洲精品之草原avav久久| 国产精品美女主播在线观看纯欲| 国产亚洲精品美女| 91人成网站www| 日本一区二区三区四区视频| 欧美精品激情在线| 国产精品你懂得| 日本国产精品视频| 91av在线免费观看| 麻豆成人在线看| 久久这里只有精品99| 欧美xxxx综合视频| 亚洲深夜福利在线| 欧美国产一区二区三区| 亚洲韩国欧洲国产日产av| 中文字幕日韩专区| 在线视频国产日韩| 亚洲一区亚洲二区| 国产精品人成电影在线观看| 亚洲精品电影在线观看| 亚洲人成电影在线观看天堂色| 久久久免费观看| 中文字幕视频一区二区在线有码| 日韩亚洲欧美中文在线| 九九热这里只有精品免费看| 性色av一区二区三区在线观看| 8050国产精品久久久久久| 国产精选久久久久久| 亚洲欧美中文日韩v在线观看| 亚洲精品久久久久| 亚洲精品成人久久| 亚洲性日韩精品一区二区| 国产精品久久综合av爱欲tv| 色99之美女主播在线视频| 国产中文字幕亚洲| 777午夜精品福利在线观看| 亚洲成人精品视频| 欧美成人午夜激情视频| 国产精品久久久av| 亚洲精品国产精品国自产观看浪潮| 亚洲欧美日韩天堂一区二区| 国内自拍欧美激情| 亚洲国产精品电影在线观看| 久久久久久久久中文字幕| 国内外成人免费激情在线视频网站| 97视频在线观看视频免费视频| 日韩av免费在线看| 亚洲日本欧美中文幕| xvideos亚洲| 午夜精品国产精品大乳美女| 欧美日韩国产成人在线| 欧美日韩国产二区| 国产亚洲视频在线| 亚洲国产精品嫩草影院久久| 欧美成人网在线| 国产精品一区久久久| 一本色道久久88精品综合| 国产欧美在线视频| 欧美成人免费全部观看天天性色| 亚洲男女性事视频| 国产精品欧美久久久| 国产成人精品av| 日韩亚洲欧美中文高清在线| 国产91亚洲精品| 97精品视频在线| 一区二区国产精品视频| 日韩欧美中文字幕在线播放| 91精品中文在线| 亚洲电影免费观看高清完整版| 91亚洲永久免费精品| 国产精品久久久久久超碰| 久久久久久久久久久亚洲| 午夜精品www| 亚洲少妇激情视频|