gfast 后端開(kāi)發(fā)-定時(shí)任務(wù)

2022-03-29 16:35 更新

在實(shí)際項(xiàng)目開(kāi)發(fā)中Web應(yīng)用有一類不可缺少的,那就是定時(shí)任務(wù)。 定時(shí)任務(wù)的場(chǎng)景可以說(shuō)非常廣泛,比如某些視頻網(wǎng)站,購(gòu)買(mǎi)會(huì)員后,每天會(huì)給會(huì)員送成長(zhǎng)值,每月會(huì)給會(huì)員送一些電影券; 比如在保證最終一致性的場(chǎng)景中,往往利用定時(shí)任務(wù)調(diào)度進(jìn)行一些比對(duì)工作;比如一些定時(shí)需要生成的報(bào)表、郵件;比如一些需要定時(shí)清理數(shù)據(jù)的任務(wù)等。 所以我們提供方便友好的web界面,實(shí)現(xiàn)動(dòng)態(tài)管理任務(wù),可以達(dá)到動(dòng)態(tài)控制定時(shí)任務(wù)啟動(dòng)、暫停、重啟、刪除、添加、修改等操作,極大地方便了開(kāi)發(fā)過(guò)程。

gfast 采用的是gf的gcron模塊提供了對(duì)定時(shí)任務(wù)的實(shí)現(xiàn),支持類似?crontab?的配置管理方式,并支持最小粒度到秒的定時(shí)任務(wù)管理。

使用方式

  • 后臺(tái)添加定時(shí)任務(wù)處理的方法
  • 定時(shí)任務(wù)方法綁定在 ?./task/bind_function.go? 文件

//定義一個(gè)無(wú)參測(cè)試任務(wù) 打印一個(gè)測(cè)試字符串
func Test1() {
    println("無(wú)參測(cè)試")
}

//帶參數(shù)測(cè)試
func Test2() {
    //獲取參數(shù)
    t := service.TimeTaskList.GetByName("test2")
    if t == nil {
        return
    }
    for _, v := range t.Param {
        fmt.Printf("參數(shù):%s;  ", v)
    }
    fmt.Println()
}

  • 在初始化的時(shí)候綁定該方法

func init() {
    task1 := &service.TimeTask{
        FuncName: "test1",
        Run:      Test1,
    }
    task2 := &service.TimeTask{
        FuncName: "test2",
        Run:      Test2,
    }
    checkUserOnlineTask := &service.TimeTask{
        FuncName: "checkUserOnline",
        Run:      api.Auth.CheckUserOnline,
    }
    service.TimeTaskList.AddTask(task1).AddTask(task2)
    //自動(dòng)執(zhí)行已開(kāi)啟的任務(wù)
    jobs, err := service.SysJob.GetJobs()
    if err != nil {
        g.Log().Error(err)
    }
    for _, job := range jobs {
        service.SysJob.JobStart(job)
    }
}

  • 后臺(tái)添加任務(wù)

m_e992d3f7dfbfdafb34b1fbd4e5d87ddc_r

  • 開(kāi)啟執(zhí)行任務(wù)

m_0532fc6c3c7958273814238bad178238_r

每隔一秒鐘可以看到控制臺(tái)輸出任務(wù)所打印的字符串:

m_eff9b6ce9becddf305b25f82929e8f1d_r

注意:此處用于測(cè)試所有把測(cè)試方法直接寫(xiě)在了?demo.go?文件中,正式使用的時(shí)候?yàn)榱瞬蛔尨宋募^(guò)于混亂,可以把要執(zhí)行的方法定義到其他文件或包下,直接綁定使用


以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)