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

go cron定時(shí)任務(wù)的基本使用講解

 更新時(shí)間:2023年06月21日 10:42:19   作者:開(kāi)發(fā)運(yùn)維玄德公  
這篇文章主要為大家介紹了gocron定時(shí)任務(wù)的基本使用講解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

1. 基本使用

引用包: "github.com/robfig/cron/v3"

1.1 初始化實(shí)例 new()

  • 語(yǔ)法
func New(opts ...Option) *Cron
  • 語(yǔ)法示例
c := cron.New()

1.2 添加定時(shí)任務(wù) AddFunc()

  • 語(yǔ)法
func (c *Cron) AddFunc(spec string, cmd func()) (EntryID, error)
  • 語(yǔ)法示例
c.AddFunc("* * * * *", func() { fmt.Println("====== 招募完成: 士兵 +1 =======") })

1.3 開(kāi)始定時(shí)任務(wù) Start()

  • 語(yǔ)法
func (c *Cron) Start()
  • 語(yǔ)法示例
c.Start()

1.4 完整示例

  • 代碼
package main
import (
    "fmt"
    "github.com/robfig/cron/v3"
    "time"
)
func main()  {
    //c := cron.New(cron.WithSeconds())
    c := cron.New()
    c.Start()
    fmt.Println(time.Now())
    c.AddFunc("* * * * *", func() { fmt.Println(time.Now(),"====== 招募完成: 士兵 +1 =======") })
    c.AddFunc("*/5 * * * *", func() { fmt.Println(time.Now(),"====== 招募完成: 伍長(zhǎng) +1 =======") })
    select {}
}
  • 結(jié)果

2022-12-16 16:40:32.155401624 +0800 CST m=+0.000051359
2022-12-16 16:41:00.012072936 +0800 CST m=+27.856722654 ====== 招募完成: 士兵 +1 =======
2022-12-16 16:42:00.061328164 +0800 CST m=+87.905977883 ====== 招募完成: 士兵 +1 =======
2022-12-16 16:43:00.003474685 +0800 CST m=+147.848124410 ====== 招募完成: 士兵 +1 =======
2022-12-16 16:44:00.059798048 +0800 CST m=+207.904447766 ====== 招募完成: 士兵 +1 =======
2022-12-16 16:45:00.06000457 +0800 CST m=+267.904654288 ====== 招募完成: 伍長(zhǎng) +1 =======
2022-12-16 16:45:00.060084718 +0800 CST m=+267.904734436 ====== 招募完成: 士兵 +1 =======
2022-12-16 16:46:00.042836167 +0800 CST m=+327.887485885 ====== 招募完成: 士兵 +1 =======
2022-12-16 16:47:00.000225283 +0800 CST m=+387.844875007 ====== 招募完成: 士兵 +1 =======
2022-12-16 16:48:00.000241943 +0800 CST m=+447.844891661 ====== 招募完成: 士兵 +1 =======
2022-12-16 16:49:00.040677982 +0800 CST m=+507.885327700 ====== 招募完成: 士兵 +1 =======
2022-12-16 16:50:00.00034055 +0800 CST m=+567.844990268 ====== 招募完成: 伍長(zhǎng) +1 =======

1.5 第一次執(zhí)行定時(shí)任務(wù)的契機(jī)

如上可見(jiàn),定時(shí)任務(wù)第一次執(zhí)行的時(shí)候是程序開(kāi)始的第一個(gè)契機(jī):

  • 16:40:32 程序開(kāi)始執(zhí)行。
  • 16:41:00 是一個(gè)整分鐘,每分鐘招募士兵開(kāi)始執(zhí)行。
  • 16:45:00 是開(kāi)始后,第一個(gè)整五分鐘,因此五分鐘執(zhí)行一次的招募伍長(zhǎng)開(kāi)始執(zhí)行。

1.6 spec 的設(shè)置

  • 語(yǔ)法

五個(gè)值分別為:

分鐘 小時(shí) 日 月 星期

  • 使用示例
* * * * * //每分鐘執(zhí)行
00 */3 * * *  //每隔3小時(shí)執(zhí)行
10 03 * * *   //每天凌晨3點(diǎn)10分(00:10)執(zhí)行
00 02 * * 7  //每周日凌晨2:00 執(zhí)行
00 02 14 2 7  //每年2月14日凌晨2:00  或 每周日凌晨2:00 執(zhí)行(最后一位0和7 都表示周日)
00 02 2,5,8 * *  //每月2,5,8號(hào)的2:00 執(zhí)行
00 02 1-8 * *  //每月1到8號(hào)的凌晨2:00 執(zhí)行

2. 粒度到秒

2.1 語(yǔ)法示例

  • 初始化
c := cron.New(cron.WithSeconds())
  • spec

最左一位是秒,其他和之前分鐘粒度相同。

2.2 完整示例

  • 代碼
package main
import (
    "fmt"
    "github.com/robfig/cron/v3"
    "time"
)
func main()  {
    c := cron.New(cron.WithSeconds())
    fmt.Println(time.Now())
    c.AddFunc("*/7 * * * * *", func() { fmt.Println(time.Now(),"====== 建造完成: 投石車 +1 =======") })
    c.AddFunc("*/3 * * * * *", func() { fmt.Println(time.Now(),"====== 招募完成: 士兵   +1 =======") })
    c.Start()
    select {}
}
  • 結(jié)果

2022-12-16 17:29:26.672306792 +0800 CST m=+0.000036478
2022-12-16 17:29:27.001131052 +0800 CST m=+0.328860748 ====== 招募完成: 士兵   +1 =======
2022-12-16 17:29:28.000333997 +0800 CST m=+1.328063678 ====== 建造完成: 投石車 +1 =======
2022-12-16 17:29:30.000180946 +0800 CST m=+3.327910638 ====== 招募完成: 士兵   +1 =======
2022-12-16 17:29:33.002458758 +0800 CST m=+6.330188430 ====== 招募完成: 士兵   +1 =======
2022-12-16 17:29:35.000249936 +0800 CST m=+8.327979610 ====== 建造完成: 投石車 +1 =======
2022-12-16 17:29:36.000311745 +0800 CST m=+9.328041418 ====== 招募完成: 士兵   +1 =======
2022-12-16 17:29:39.002463183 +0800 CST m=+12.330192861 ====== 招募完成: 士兵   +1 =======
2022-12-16 17:29:42.000297949 +0800 CST m=+15.328027640 ====== 建造完成: 投石車 +1 =======
2022-12-16 17:29:42.000353037 +0800 CST m=+15.328082842 ====== 招募完成: 士兵   +1 =======
2022-12-16 17:29:45.00024908 +0800 CST m=+18.327978755 ====== 招募完成: 士兵   +1 =======
2022-12-16 17:29:48.002469543 +0800 CST m=+21.330199229 ====== 招募完成: 士兵   +1 =======

如上可見(jiàn):

  • 17:29:26 程序開(kāi)始執(zhí)行
  • 17:29:27 ,27秒是第一個(gè)3秒的整倍數(shù),每隔3秒 招募一個(gè)士兵的任務(wù)開(kāi)始執(zhí)行
  • 17:29:35,35秒是第一個(gè)7秒的整倍數(shù),每隔7秒 建造一個(gè)投石車的任務(wù)開(kāi)始執(zhí)行。

3. 按時(shí)間間隔

3.1 語(yǔ)法

符號(hào)說(shuō)明示例
@yearly每年執(zhí)行
@monthly每月執(zhí)行
@weekly每周執(zhí)行
@daily每天執(zhí)行
@hourly每小時(shí)執(zhí)行
@every指定間隔"@every 1h25m"

3.2 完整示例(@every)

  • 代碼
package main
import (
    "fmt"
    "github.com/robfig/cron/v3"
    "time"
)
func main()  {
    c := cron.New(cron.WithSeconds())
    fmt.Println(time.Now())
    c.AddFunc("@every 1m", func() { fmt.Println(time.Now(),"====== 建造完成: 投石車 +1 =======") })
    c.Start()
    select {}
}

結(jié)果

如下可見(jiàn),和前文“基本使用”中示例的執(zhí)行契機(jī)不同。會(huì)在程序啟動(dòng)后一分鐘執(zhí)行,而不是在下一個(gè)一分鐘的整倍數(shù)執(zhí)行。

  • 程序在09:53:11啟動(dòng),在一分鐘之后(09:54:11)執(zhí)行第一次
  • 如果是基本使用中的方法:程序在09:53:11啟動(dòng),會(huì)在09:54:00 執(zhí)行第一次

2022-12-21 09:53:11.620438535 +0800 CST m=+0.000041561
2022-12-21 09:54:11.008589266 +0800 CST m=+59.388192276 ====== 建造完成: 投石車 +1 =======
2022-12-21 09:55:11.052366134 +0800 CST m=+119.431969148 ====== 建造完成: 投石車 +1 =======
2022-12-21 09:56:11.008584381 +0800 CST m=+179.388187390 ====== 建造完成: 投石車 +1 =======
2022-12-21 09:57:11.018895862 +0800 CST m=+239.398498872 ====== 建造完成: 投石車 +1 =======
2022-12-21 09:58:11.018836287 +0800 CST m=+299.398439302 ====== 建造完成: 投石車 +1 =======
2022-12-21 09:59:11.008604569 +0800 CST m=+359.388207580 ====== 建造完成: 投石車 +1 =======
2022-12-21 10:00:11.006091578 +0800 CST m=+419.385694593 ====== 建造完成: 投石車 +1 =======
2022-12-21 10:01:11.010293781 +0800 CST m=+479.389896790 ====== 建造完成: 投石車 +1 =======

3.3 完整示例

  • 代碼
package main
import (
    "fmt"
    "github.com/robfig/cron/v3"
    "time"
)
func main()  {
    c := cron.New(cron.WithSeconds())
    fmt.Println(time.Now())
    c.AddFunc("@weekly", func() { fmt.Println(time.Now(),"====== 建造完成: 投石車 +1 =======") })
    c.Start()
    select {}
}
  • 結(jié)果

時(shí)間太長(zhǎng)等不來(lái)了

以上就是gocron定時(shí)任務(wù)的基本使用講解的詳細(xì)內(nèi)容,更多關(guān)于gocron定時(shí)任務(wù)的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • GO語(yǔ)言匿名函數(shù)的幾種使用方式

    GO語(yǔ)言匿名函數(shù)的幾種使用方式

    本文主要介紹了GO語(yǔ)言匿名函數(shù)的幾種使用方式,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2025-08-08
  • Golang多線程下載器實(shí)現(xiàn)高效快速地下載大文件

    Golang多線程下載器實(shí)現(xiàn)高效快速地下載大文件

    Golang多線程下載器是一種高效、快速地下載大文件的方法。Golang語(yǔ)言天生支持并發(fā)和多線程,可以輕松實(shí)現(xiàn)多線程下載器的開(kāi)發(fā)。通過(guò)使用Golang的協(xié)程和通道,可以將下載任務(wù)分配到多個(gè)線程中并行處理,提高了下載的效率和速度
    2023-05-05
  • Go語(yǔ)言利用compress/gzip庫(kù)實(shí)現(xiàn)高效壓縮解決方案詳解

    Go語(yǔ)言利用compress/gzip庫(kù)實(shí)現(xiàn)高效壓縮解決方案詳解

    在數(shù)據(jù)存儲(chǔ)與傳輸領(lǐng)域,Gzip作為一種廣泛應(yīng)用的無(wú)損壓縮格式,以其高效的壓縮比和跨平臺(tái)兼容性成為行業(yè)標(biāo)準(zhǔn),下面我們就來(lái)看看Go語(yǔ)言如何利用該庫(kù)實(shí)現(xiàn)高效的數(shù)據(jù)壓縮與解壓縮吧
    2025-07-07
  • golang日志框架之logrus的安裝使用教程

    golang日志框架之logrus的安裝使用教程

    logrus是一個(gè)非常強(qiáng)大的日志框架,具有靈活的功能和易于使用的API,適合處理各種類型的日志需求,這篇文章主要介紹了golang日志框架之logrus的安裝使用,需要的朋友可以參考下
    2023-08-08
  • go開(kāi)源項(xiàng)目用戶名密碼驗(yàn)證的邏輯鬼才寫法

    go開(kāi)源項(xiàng)目用戶名密碼驗(yàn)證的邏輯鬼才寫法

    這篇文章主要為大家介紹了go開(kāi)源項(xiàng)目中發(fā)現(xiàn)的一個(gè)邏輯鬼才寫法,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-07-07
  • Gin golang web開(kāi)發(fā)模型綁定實(shí)現(xiàn)過(guò)程解析

    Gin golang web開(kāi)發(fā)模型綁定實(shí)現(xiàn)過(guò)程解析

    這篇文章主要介紹了Gin golang web開(kāi)發(fā)模型綁定實(shí)現(xiàn)過(guò)程解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-10-10
  • Golang中g(shù)RPC內(nèi)置Trace的實(shí)現(xiàn)

    Golang中g(shù)RPC內(nèi)置Trace的實(shí)現(xiàn)

    gRPC內(nèi)置了基于golang.org/x/net/trace包的客戶端和服務(wù)端請(qǐng)求追蹤,默認(rèn)開(kāi)啟狀態(tài),可以查看事件和請(qǐng)求日志,幫助調(diào)試,具有一定的參考價(jià)值,感興趣的可以了解一下
    2025-03-03
  • golang中Context的使用場(chǎng)景

    golang中Context的使用場(chǎng)景

    context包提供了一種在goroutine之間傳遞信號(hào)的方法,用于管理請(qǐng)求的生命周期和控制并發(fā)操作,本文主要介紹了golang中Context的使用場(chǎng)景,下面就來(lái)介紹一下,感興趣的可以了解一下
    2025-05-05
  • Golang單元測(cè)試與覆蓋率的實(shí)例講解

    Golang單元測(cè)試與覆蓋率的實(shí)例講解

    這篇文章主要介紹了Golang單元測(cè)試與覆蓋率的實(shí)例講解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-11-11
  • 詳解Go語(yǔ)言中init的使用與常見(jiàn)應(yīng)用場(chǎng)景

    詳解Go語(yǔ)言中init的使用與常見(jiàn)應(yīng)用場(chǎng)景

    Go?中有一個(gè)特別的?init()?函數(shù),它主要用于包的初始化,這篇文章將以此為主題介紹?Go?中?init()?函數(shù)的使用和常見(jiàn)使用場(chǎng)景,希望對(duì)大家有所幫助
    2024-02-02

最新評(píng)論

通许县| 巴马| 类乌齐县| 盐边县| 汉寿县| 大关县| 苏尼特左旗| 伊金霍洛旗| 武鸣县| 平舆县| 上饶市| 闽侯县| 河西区| 马龙县| 米林县| 苏州市| 隆德县| 合山市| 五河县| 吴堡县| 崇州市| 耿马| 博白县| 卢湾区| 图片| 崇阳县| 红河县| 原阳县| 武威市| 乡宁县| 普宁市| 安西县| 兴海县| 莆田市| 莱芜市| 靖西县| 丽江市| 米泉市| 开鲁县| 漠河县| 翼城县|