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

golang定時(shí)任務(wù)cron項(xiàng)目實(shí)操指南

 更新時(shí)間:2022年12月26日 09:33:59   作者:DaSheng1104  
Go實(shí)現(xiàn)的cron 表達(dá)式的基本語(yǔ)法跟linux 中的 crontab基本是類似的,下面這篇文章主要給大家介紹了關(guān)于golang定時(shí)任務(wù)cron項(xiàng)目實(shí)操的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考下

一、簡(jiǎn)介:

1、cron包

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

文檔:cron package - github.com/robfig/cron - Go Packages

2、表達(dá)式,go cron使用的和 Linux crontab 一樣的表達(dá)式

# 文件格式說明
# ┌──分鐘(0 - 59)
# │  ┌──小時(shí)(0 - 23)
# │  │  ┌──日(1 - 31)
# │  │  │  ┌─月(1 - 12)
# │  │  │  │  ┌─星期(0 - 6,表示從周日到周六)
# │  │  │  │  │
# *  *  *  *  * 被執(zhí)行的命令
 

3、新老版本區(qū)別

老版本的最大區(qū)別在于如果需要秒級(jí)定義,需要額外傳入?yún)?shù),并且可以自由配置參數(shù)

c := cron.New(cron.WithSeconds())  // 秒級(jí)操作cron.WithSeconds()

 代碼示例

package main
 
import (
	"fmt"
	"github.com/robfig/cron/v3"
	"log"
	"os"
)
 
func RunCron() {
	c := cron.New(cron.WithSeconds(), cron.WithChain(cron.SkipIfStillRunning(cron.DefaultLogger)), cron.WithLogger(
		cron.VerbosePrintfLogger(log.New(os.Stdout, "cron: ", log.LstdFlags))))
	i := 1
	EntryID, err := c.AddFunc("*/5 * * * * *", func() {
		fmt.Println(time.Now(), "每5s一次----------------", i)
		time.Sleep(time.Second *6)
		i++
	})
	fmt.Println(time.Now(), EntryID, err)
 
	c.Start()
    select()
}
func main() {
	RunCron()
}

多任務(wù) AddJob

package main
 
import (
   "fmt"
   "github.com/robfig/cron/v3"
)
 
type Job1 struct {
}
 
func (t Job1) Run() {
   fmt.Println(time.Now(), "I'm Job1")
}
 
type Job2 struct {
}
 
func (t Job2) Run() {
   fmt.Println(time.Now(), "I'm Job2")
}
 
func RunCron() {
   c := cron.New(cron.WithSeconds())
 
   EntryID, err := c.AddJob("*/5 * * * * *", Job1{})
   fmt.Println(time.Now(), EntryID, err)
 
   EntryID, err = c.AddJob("*/10 * * * * *", Job2{})
   fmt.Println(time.Now(), EntryID, err)
 
   c.Start()
   select()
}
func main() {
   RunCron()
}

二、項(xiàng)目實(shí)操

數(shù)據(jù)統(tǒng)計(jì)系統(tǒng) statsys 每天凌晨定時(shí)統(tǒng)計(jì)前一天運(yùn)營(yíng)數(shù)據(jù)

1、啟動(dòng)daemon 守護(hù)進(jìn)程

package main
 
import (
	"github.com/robfig/cron/v3"
	logger "github.com/sirupsen/logrus"
	"statsys/scheduler/crob_job"  // 這里引入你的任務(wù)
)
 
 
 
func printLog(crobJob string, err error) {
	if err != nil {
		logger.Errorf("Start %s Error, err: %v", crobJob, err)
	} else {
		logger.Infof("Start %s Successful!", crobJob)
	}
}
 
func RunCron() {
	c := cron.New()
 
	// 收入數(shù)據(jù)統(tǒng)計(jì) 定時(shí)任務(wù)(每天凌晨00:01:00)執(zhí)行
	_, err := c.AddJob("1 0 * * *", &crob_job.DeliveryIncomeStatJob) 
	printLog("IncomeStatJob", err)
 
	// 支出數(shù)據(jù)統(tǒng)計(jì) 定時(shí)任務(wù)(每天凌晨00:03:00)執(zhí)行
	_, err = c.AddJob("3 0 * * *", &crob_job.PaymentStatJob)
	printLog("PaymentStatJob", err)
 
	
 
	// 啟動(dòng)一個(gè)新的 goroutine 做循環(huán)檢測(cè)
	c.Start()
	select {}
}
 
func main() {
	RunCron()
}

2、統(tǒng)計(jì)任務(wù)

// 支出數(shù)據(jù)統(tǒng)計(jì)定時(shí)任務(wù)
package crob_job
 
 
type paymentStatJob struct {
	amountStatDataBase *amount_stat.AmountDataBase
}
 
// 單利
var (
	PaymentStatJob = paymentStatJob{}
)
 
func (this *paymentStatJob) Run() {
	logger.Warningln(">>>>>>>>>>>>> Start paymentStat")
 
    startTime := "2022-01-02"
    endTime := "2022-01-01"
	// 查詢統(tǒng)計(jì)數(shù)據(jù)
	dataList, code := brawn.StationAccountSrv.GetPaymentDate(startTime, endTime)
	if code != ecode.SUCC {
		logger.Errorf("支出數(shù)據(jù)統(tǒng)計(jì)定時(shí)任務(wù) errCode: %v", code)
		return
	}
 
	if len(dataList) <= 0 {
		logger.Warningln(" >>>>>>>> 暫無 支出數(shù)據(jù) <<<<<<<<")
		return
	}
 
	// 保存支付統(tǒng)計(jì)數(shù)據(jù)
	this.amountStatDao.SavePaymentStatData(dataList...)
 
	logger.Warningln("<<<<<<<<<<<<< End paymentStat")
}

... 具體你的項(xiàng)目多個(gè)任務(wù)

執(zhí)行結(jié)果

總結(jié)

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

相關(guān)文章

  • 基于Golang實(shí)現(xiàn)YOLO目標(biāo)檢測(cè)算法

    基于Golang實(shí)現(xiàn)YOLO目標(biāo)檢測(cè)算法

    目標(biāo)檢測(cè)是計(jì)算機(jī)視覺領(lǐng)域的重要任務(wù),它不僅可以識(shí)別圖像中的物體,還可以標(biāo)記出物體的位置和邊界框,YOLO是一種先進(jìn)的目標(biāo)檢測(cè)算法,以其高精度和實(shí)時(shí)性而聞名,本文將介紹如何使用Golang實(shí)現(xiàn)YOLO目標(biāo)檢測(cè)算法,文中有相關(guān)的代碼示例供大家參考,需要的朋友可以參考下
    2023-11-11
  • 使用gin框架搭建簡(jiǎn)易服務(wù)的實(shí)現(xiàn)方法

    使用gin框架搭建簡(jiǎn)易服務(wù)的實(shí)現(xiàn)方法

    go語(yǔ)言web框架挺多的,本文就介紹了一下如何使用gin框架搭建簡(jiǎn)易服務(wù)的實(shí)現(xiàn)方法,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-12-12
  • Go語(yǔ)言中Seeker接口的用法詳解

    Go語(yǔ)言中Seeker接口的用法詳解

    Go語(yǔ)言標(biāo)準(zhǔn)庫(kù)中的io包提供了一系列接口,用于處理各種I/O操作,其中Seeker接口在處理大文件或需要隨機(jī)訪問的場(chǎng)景中非常有用,本文將結(jié)合具體案例,詳細(xì)介紹Go語(yǔ)言中io包的Seeker接口的用法,需要的朋友可以參考下
    2024-10-10
  • GoLang實(shí)現(xiàn)日志收集器流程講解

    GoLang實(shí)現(xiàn)日志收集器流程講解

    這篇文章主要介紹了GoLang實(shí)現(xiàn)日志收集器流程,看日志是開發(fā)者平時(shí)排查BUG所必須的掌握的技能,但是日志冗雜,所以寫個(gè)小工具來收集這些日志幫助我們排查BUG,感興趣想要詳細(xì)了解可以參考下文
    2023-05-05
  • Go語(yǔ)言中高效地處理集合的方法小結(jié)

    Go語(yǔ)言中高效地處理集合的方法小結(jié)

    在?Go?語(yǔ)言中,處理集合(如切片、映射等)時(shí),可以通過多種方式提高效率,本文為大家整理了一些常見的方法,有需要的小伙伴可以了解一下
    2025-02-02
  • Go語(yǔ)言實(shí)現(xiàn)文件上傳

    Go語(yǔ)言實(shí)現(xiàn)文件上傳

    這篇文章主要為大家詳細(xì)介紹了Go語(yǔ)言實(shí)現(xiàn)文件上傳,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-07-07
  • 基于Go語(yǔ)言實(shí)現(xiàn)一個(gè)并發(fā)下載器

    基于Go語(yǔ)言實(shí)現(xiàn)一個(gè)并發(fā)下載器

    這篇文章主要為大家詳細(xì)介紹了如何利用GO語(yǔ)言實(shí)現(xiàn)一個(gè)并發(fā)的文件下載器,可以在不重新啟動(dòng)整個(gè)下載的情況下處理錯(cuò)誤,感興趣的小伙伴可以了解一下
    2023-10-10
  • Go語(yǔ)言讀寫鎖RWMutex的源碼分析

    Go語(yǔ)言讀寫鎖RWMutex的源碼分析

    本篇文章我們將一起來學(xué)習(xí)下Go語(yǔ)言中的讀寫鎖sync.RWMutex。文中的示例講解詳細(xì),具有一定的借鑒價(jià)值,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2022-10-10
  • golang開發(fā)go包依賴管理godep使用教程

    golang開發(fā)go包依賴管理godep使用教程

    這篇文章主要為大家介紹了golang開發(fā)go包依賴管理godep使用教程詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步
    2021-11-11
  • go按行讀取文件的三種實(shí)現(xiàn)方式匯總

    go按行讀取文件的三種實(shí)現(xiàn)方式匯總

    最近有遇到需要用go讀取文件的情況,下面這篇文章主要給大家介紹了關(guān)于go按行讀取文件的三種實(shí)現(xiàn)方式,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-09-09

最新評(píng)論

保靖县| 澄迈县| 仙游县| 台北市| 易门县| 聂拉木县| 弥渡县| 鄱阳县| 六安市| 巨鹿县| 克东县| 始兴县| 洞口县| 翁源县| 金阳县| 景德镇市| 石门县| 长葛市| 丁青县| 河北省| 康马县| 海原县| 绵阳市| 鹰潭市| 遂川县| 贵溪市| 门源| 新津县| 萍乡市| 中卫市| 旌德县| 浮梁县| 阿克苏市| 侯马市| 蒙阴县| 阿坝县| 九江市| 仪陇县| 苏州市| 峡江县| 万山特区|