Golang AGScheduler動(dòng)態(tài)持久化任務(wù)調(diào)度的強(qiáng)大庫(kù)使用實(shí)例
正文
以前一直使用 Python 的任務(wù)調(diào)度庫(kù) APScheduler(支持任務(wù)持久化,支持多種存儲(chǔ)方式),但由于沒(méi)有找到與它功能和使用方式類(lèi)似的 Golang 庫(kù),所以模仿 APScheduler 3.x 寫(xiě)了個(gè)簡(jiǎn)易版本的 AGScheduler。
AGScheduler
Advanced Golang Scheduler (AGScheduler) 是一款適用于 Golang 的任務(wù)調(diào)度程序,支持多種調(diào)度方式,動(dòng)態(tài)更改和持久化任務(wù)
警示
該庫(kù)處于實(shí)驗(yàn)階段,不建議用于生產(chǎn)環(huán)境
鏈接 https://github.com/kwkwc/agscheduler
特性
支持三種調(diào)度方式
- [x] 一次性執(zhí)行
- [x] 間隔執(zhí)行
- [x] Cron 式調(diào)度
支持多種任務(wù)存儲(chǔ)方式
使用
package main import ( "fmt" "log/slog" "time" "github.com/kwkwc/agscheduler" "github.com/kwkwc/agscheduler/stores" ) func printMsg(j agscheduler.Job) { slog.Info(fmt.Sprintf("Run %s %s\n", j.Name, j.Args)) } func main() { agscheduler.RegisterFuncs(printMsg) store := &stores.MemoryStore{} scheduler := &agscheduler.Scheduler{} scheduler.SetStore(store) job := agscheduler.Job{ Name: "Job", Type: agscheduler.TYPE_INTERVAL, Timezone: "UTC", Func: printMsg, Args: []any{"arg1", "arg2", "arg3"}, Interval: 2 * time.Second, } jobId := scheduler.AddJob(job) job, _ = scheduler.GetJob(jobId) slog.Info(fmt.Sprintf("Scheduler add %s %s.\n\n", job.Name, job)) scheduler.Start() slog.Info("Scheduler Start.\n\n") select {} }
注冊(cè)函數(shù)
由于 golang 無(wú)法序列化函數(shù),所以 scheduler.Start()
之前需要使用 RegisterFuncs
注冊(cè)函數(shù)
致謝
以上就是Golang AGScheduler動(dòng)態(tài)持久化任務(wù)調(diào)度的強(qiáng)大庫(kù)使用實(shí)例的詳細(xì)內(nèi)容,更多關(guān)于Go AGScheduler任務(wù)調(diào)度的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
go語(yǔ)言中的數(shù)組指針和指針數(shù)組的區(qū)別小結(jié)
本文主要介紹了go語(yǔ)言中的數(shù)組指針和指針數(shù)組的區(qū)別小結(jié),文中通過(guò)示例代碼介紹的很詳細(xì),具有一定的參考價(jià)值,感興趣的可以了解一下2024-10-10golang實(shí)現(xiàn)單點(diǎn)登錄系統(tǒng)(go-sso)
這篇文章主要介紹了golang實(shí)現(xiàn)單點(diǎn)登錄系統(tǒng)(go-sso),本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-06-06golang通過(guò)mysql語(yǔ)句實(shí)現(xiàn)分頁(yè)查詢(xún)
這篇文章主要介紹了golang通過(guò)mysql語(yǔ)句實(shí)現(xiàn)分頁(yè)查詢(xún),文章內(nèi)容介紹詳細(xì),具有一定的參考價(jià)值,需要的小伙伴可以參考一下,希望對(duì)你的學(xué)習(xí)有所幫助2022-03-03Go語(yǔ)言通過(guò)WaitGroup實(shí)現(xiàn)控制并發(fā)的示例詳解
Channel能夠很好的幫助我們控制并發(fā),但是在開(kāi)發(fā)習(xí)慣上與顯示的表達(dá)不太相同,所以在Go語(yǔ)言中可以利用sync包中的WaitGroup實(shí)現(xiàn)并發(fā)控制,本文就來(lái)和大家詳細(xì)聊聊WaitGroup如何實(shí)現(xiàn)控制并發(fā)2023-01-01Golang中字符串(string)與字節(jié)數(shù)組([]byte)一行代碼互轉(zhuǎn)實(shí)例
golang語(yǔ)言本身就是c的工具集,開(kāi)發(fā)c的程序用到的大部分結(jié)構(gòu)體,內(nèi)存管理,攜程等,golang基本都有,下面這篇文章主要給大家介紹了關(guān)于Golang中字符串(string)與字節(jié)數(shù)組([]byte)一行代碼互轉(zhuǎn)的相關(guān)資料,需要的朋友可以參考下2022-09-09