最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

前言

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

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

cronexpr庫(kù)

定時(shí)語(yǔ)法介紹

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

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

L w # 不常用

常用定時(shí)

每日 即每天凌晨零點(diǎn):0 0 0 * * * *

每日凌晨2點(diǎn): 0 0 2 * * * *

每月開(kāi)始: 0 0 0 1 * * *

每周開(kāi)始: 0 0 0 * * 1 * 注意 0是星期天

定時(shí)代碼

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

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

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

結(jié)語(yǔ)

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

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

相關(guān)文章

  • Go語(yǔ)言中使用urfave/cli命令行框架

    Go語(yǔ)言中使用urfave/cli命令行框架

    這篇文章介紹了Go語(yǔ)言中使用urfave/cli命令行框架的方法,文中通過(guò)示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-07-07
  • golang之反射和斷言的具體使用

    golang之反射和斷言的具體使用

    這篇文章主要介紹了golang之反射和斷言的具體使用,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-10-10
  • Golang內(nèi)存模型教科書(shū)級(jí)講解

    Golang內(nèi)存模型教科書(shū)級(jí)講解

    go官方介紹go內(nèi)存模型的時(shí)候說(shuō):探究在什么條件下,goroutine?在讀取一個(gè)變量的值的時(shí),能夠看到其它?goroutine?對(duì)這個(gè)變量進(jìn)行的寫(xiě)的結(jié)果,Go內(nèi)存模型規(guī)定了一些條件,在這些條件下,在一個(gè)goroutine中讀取變量返回的值能夠確保是另一個(gè)goroutine中對(duì)該變量寫(xiě)入的值
    2023-03-03
  • Go Web下gin框架的模板渲染的實(shí)現(xiàn)

    Go Web下gin框架的模板渲染的實(shí)現(xiàn)

    Gin框架是目前非常流行的Go語(yǔ)言Web框架之一,作為一個(gè)輕量級(jí)的框架,Gin提供了豐富的功能和靈活的架構(gòu),本文就來(lái)介紹下Go Web下gin框架的模板渲染的實(shí)現(xiàn),感興趣的可以了解一下
    2023-10-10
  • GoLand?使用自定義包的實(shí)現(xiàn)步驟

    GoLand?使用自定義包的實(shí)現(xiàn)步驟

    包是Go語(yǔ)言中代碼組成和代碼編譯的主要方式,本文主要介紹了GoLand?使用自定義包的實(shí)現(xiàn)步驟,具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-06-06
  • 使用Golang實(shí)現(xiàn)Sm2加解密的代碼詳解

    使用Golang實(shí)現(xiàn)Sm2加解密的代碼詳解

    本文主要介紹了Go語(yǔ)言實(shí)現(xiàn)Sm2加解密的示例代碼,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2024-03-03
  • Go1.20最新資訊go?arena手動(dòng)管理內(nèi)存鴿了

    Go1.20最新資訊go?arena手動(dòng)管理內(nèi)存鴿了

    由于過(guò)于繁雜,Go?核心團(tuán)隊(duì)成員@Ian?Lance?Taylor,也表態(tài):目前尚未做出任何決定,也不可能在短期內(nèi)做出任何決定,可以認(rèn)為這個(gè)提案基本鴿了,今天這篇文章就是給大家同步目前的情況
    2023-11-11
  • golang 如何獲取pem格式RSA公私鑰長(zhǎng)度

    golang 如何獲取pem格式RSA公私鑰長(zhǎng)度

    這篇文章主要介紹了golang 如何獲取pem格式RSA公私鑰長(zhǎng)度操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-12-12
  • go語(yǔ)言通過(guò)管道連接兩個(gè)命令行進(jìn)程的方法

    go語(yǔ)言通過(guò)管道連接兩個(gè)命令行進(jìn)程的方法

    這篇文章主要介紹了go語(yǔ)言通過(guò)管道連接兩個(gè)命令行進(jìn)程的方法,實(shí)例分析了Go語(yǔ)言操作命令行進(jìn)程的技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-03-03
  • 基于golang uint8、int8與byte的區(qū)別說(shuō)明

    基于golang uint8、int8與byte的區(qū)別說(shuō)明

    這篇文章主要介紹了基于golang uint8、int8與byte的區(qū)別說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2021-03-03

最新評(píng)論

新民市| 绿春县| 额济纳旗| 台江县| 阿合奇县| 嘉峪关市| 青铜峡市| 宾川县| 威信县| 会泽县| 贡觉县| 宁陵县| 苏尼特左旗| 同心县| 阿拉善右旗| 潜江市| 临邑县| 五指山市| 云霄县| 张掖市| 云安县| 孝昌县| 内乡县| 嘉义县| 会昌县| 曲水县| 丹东市| 来凤县| 台南市| 五常市| 文山县| 沽源县| 陕西省| 威宁| 彭泽县| 中江县| 锡林浩特市| 且末县| 临邑县| 元谋县| 河东区|