亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

golang 常用定時任務(wù)匯總

 更新時間:2022年09月19日 11:10:17   作者:lambdang???????  
這篇文章主要介紹了golang 常用定時任務(wù)匯總,golang利用goroutine外加github.com/gorhill/cronexpr庫就可實現(xiàn)定時任務(wù),具體代碼介紹,需要的小伙伴可以參考一下

前言

項目中經(jīng)常有定時任務(wù)的需求,一般都是利用linux的cron命令,定時執(zhí)行腳本,無論從管理上來說還是從開發(fā)上來說都不是最好的方案,要是能在項目里直接開發(fā)定時任務(wù),就比較完美了。

golang利用goroutine外加github.com/gorhill/cronexpr庫就可實現(xiàn)定時任務(wù),代碼簡單,原理簡單。

cronexpr庫

定時語法介紹

該庫是一個定時字符串規(guī)則解析庫,同linux中的cron類似,但是可以精確到秒,也可以設(shè)定年,可以直接到git里查看,這里只對最常用的規(guī)則進行解釋。

索引字段名是否必須值范圍可用字符串
10-59* / , -
20-59* / , -
30-23* / , -
4日(月中)1-31* / , - L W
51-12* / , -
6日(星期中)0-6* / , - L #
71970-2099* / , -
  • 星號(*) 表示該字段所有的值,例:每秒 、每天。
  • 斜線(/) 范圍增量,例: 分鐘 3-59/15 表示3分到59分中從第3分開始,每15分中一次,分鐘 */15 表示0-59分鐘,從0分鐘開始,每15分鐘1次。*在這里表示全范圍。
  • 逗號(,) 分割列表中的項目,例:星期1,星期2,星期3 表示為 0,1,2
  • 連字符(-) 表示范圍,列,2000年到2010年表示為 2000-2010

L w # 不常用

常用定時

每日 即每天凌晨零點:0 0 0 * * * *

每日凌晨2點: 0 0 2 * * * *

每月開始: 0 0 0 1 * * *

每周開始: 0 0 0 * * 1 * 注意 0是星期天

定時代碼

func Task () {
	cron := cronexpr.MustParse("0 0 0 * * * *")  //用cron庫生成一個cronexpr.Expression對象
	next := cron.Next(time.Now()) //計算下次觸發(fā)時間的時間對象
	for {
		now := time.Now() //每次循環(huán)計算獲取當前時間
		if next.Before(now) || next.Equal(now) {  //下次觸發(fā)時間與當前時間進行對比,等于或者時間已到 則進行任務(wù)觸發(fā)
                    ... //此處填寫任務(wù)代碼
			next = cron.Next(now)  //重新計算下次任務(wù)時間的時間對象
		}
		select {
		case <-time.NewTicker(time.Second).C: //每秒掃描一遍 循環(huán)頻率設(shè)定
		}
	}
}

代碼里注釋已經(jīng)很清楚了。在整理一下步驟:

  • 先根據(jù)定時規(guī)則生成一個 cronexpr.Expression 對象,簡稱cron對象。
  • 循環(huán)中判斷當前時刻和cron計算的下次時刻是否已經(jīng)到達。
  • 已經(jīng)到達則運行定時任務(wù)代碼并重新計算下次到達時刻。
  • 設(shè)定循環(huán)頻率,根據(jù)實際情況設(shè)定循環(huán)頻率。

結(jié)語

golang定時任務(wù)的代碼很簡單,定時任務(wù)規(guī)則語法與linux cron相似,我總是記不住,每次用到時候就去翻git翻以前做過的代碼,這次總結(jié)一下,下次直接翻這篇文章了,你也可以收藏起來,用到時候查詢一下。

到此這篇關(guān)于golang 常用定時任務(wù)匯總的文章就介紹到這了,更多相關(guān)golang 定時任務(wù)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Go語言實現(xiàn)請求超時處理的方法總結(jié)

    Go語言實現(xiàn)請求超時處理的方法總結(jié)

    這篇文章主要為大家詳細介紹了Go語言中實現(xiàn)請求的超時控制的方法,主要是通過timer和timerCtx來實現(xiàn)請求的超時控制,希望對大家有所幫助
    2023-05-05
  • grpc入門Unary模式使用方法示例教程

    grpc入門Unary模式使用方法示例教程

    這篇文章主要為大家介紹了grpc入門Unary模式使用方法示例教程,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-12-12
  • Go方法接收者值接收者與指針接收者詳解

    Go方法接收者值接收者與指針接收者詳解

    這篇文章主要為大家介紹了Go方法接收者值接收者與指針接收者詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-11-11
  • 一文帶你玩轉(zhuǎn)Golang Prometheus Eexporter開發(fā)

    一文帶你玩轉(zhuǎn)Golang Prometheus Eexporter開發(fā)

    本文分兩大塊,一是搞清楚prometheus四種類型的指標Counter,Gauge,Histogram,Summary用golang語言如何構(gòu)造這4種類型對應(yīng)的指標,二是搞清楚修改指標值的場景和方式,感興趣的可以了解一下
    2023-02-02
  • go語言題解LeetCode453最小操作次數(shù)使數(shù)組元素相等

    go語言題解LeetCode453最小操作次數(shù)使數(shù)組元素相等

    這篇文章主要為大家介紹了go語言題解LeetCode453最小操作次數(shù)使數(shù)組元素相等示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-12-12
  • 淺談Go連接池的設(shè)計與實現(xiàn)

    淺談Go連接池的設(shè)計與實現(xiàn)

    本文主要介紹了淺談Go連接池的設(shè)計與實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-04-04
  • Go與Rust高性能解析JSON實現(xiàn)方法示例

    Go與Rust高性能解析JSON實現(xiàn)方法示例

    這篇文章主要為大家介紹了Go與Rust高性能的解析JSON實現(xiàn)方法示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-12-12
  • Golang中由零值和gob庫特性引起B(yǎng)UG解析

    Golang中由零值和gob庫特性引起B(yǎng)UG解析

    這篇文章主要為大家介紹了Golang中由零值和gob庫特性引起B(yǎng)UG解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-04-04
  • 重學(xué)Go語言之如何使用Modules

    重學(xué)Go語言之如何使用Modules

    Go語言在Go.1.11版本發(fā)布了Go?Modules,這是一種新的Go項目依賴管理解決方案,可以讓Go項目的依賴包關(guān)系更加清晰,也更容易管理,下面就來看看Modules是如何使用的吧
    2023-07-07
  • GoFrame?gredis緩存DoVar及Conn連接對象的自動序列化

    GoFrame?gredis緩存DoVar及Conn連接對象的自動序列化

    這篇文章主要為大家介紹了GoFrame?gredis干貨DoVar?Conn連接對象自動序列化詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-06-06

最新評論