




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第Go編寫定時(shí)器與定時(shí)任務(wù)詳解(附第三方庫(kù)gocron用法)目錄Go編寫定時(shí)器和定時(shí)任務(wù)TimerTickergocron安裝Demo總結(jié)
Go編寫定時(shí)器和定時(shí)任務(wù)
在項(xiàng)目開發(fā)當(dāng)中,可能會(huì)遇到這樣的場(chǎng)景:
1A任務(wù)需要在多久之后執(zhí)行一次(定時(shí)器)
2.B任務(wù)需要每隔多長(zhǎng)時(shí)間執(zhí)行一次(定時(shí)任務(wù))
談到定時(shí)任務(wù),離不開linux的crontab.先簡(jiǎn)單了解下crontab
//每隔1秒執(zhí)行一次
*/1****
//每隔1分鐘執(zhí)行一次
0*/1***
//每天0點(diǎn)執(zhí)行一次
000**
//每月1號(hào)凌晨1點(diǎn)執(zhí)行一次
0011*
//在1分、2分、3分執(zhí)行一次
01,2,3***
//每天的0點(diǎn)、1點(diǎn)、2點(diǎn)執(zhí)行一次
000,1,2**
使用crontab實(shí)現(xiàn)定時(shí)器和定時(shí)任務(wù)也可以,但是crontab默認(rèn)只能精確到分鐘,如果想要精確到秒可以使用for循環(huán)處理秒級(jí)人物
*****foriin$(seq111);doechotest/etc/demo/demo.txt;sleep1;done
本文簡(jiǎn)單介紹下go實(shí)現(xiàn)定時(shí)器和定時(shí)任務(wù)的用法以及簡(jiǎn)單介紹一個(gè)第三方庫(kù)gocron的用法
Timer
1timer實(shí)現(xiàn)定時(shí)器(延遲執(zhí)行),這個(gè)定時(shí)器只會(huì)觸發(fā)一次.
使用于場(chǎng)景1(當(dāng)然如果把下面的代碼寫在一個(gè)for循環(huán)中也可以實(shí)現(xiàn)定時(shí)任務(wù))
Demo:
packagemain
import(
"fmt"
"time"
funcmain(){
t:=time.NewTimer(1*time.Second)
-t.C
fmt.Println("1s時(shí)間到")
結(jié)果:
1s時(shí)間到
2停止定時(shí)器
使用time.Stop()停止定時(shí)器
?通過(guò)向通道發(fā)送一個(gè)信號(hào),通知定時(shí)器是否關(guān)閉
Demo:
packagemain
import(
"fmt"
"time"
functest12(chchanint)bool{
timer:=time.NewTimer(1*time.Second)
select{
case-ch:
iftimer.Stop(){
fmt.Println("關(guān)閉定時(shí)器")
returntrue
default:
fmt.Println("繼續(xù)執(zhí)行定時(shí)器")
returntrue
funcmain(){
ch:=make(chanint,1)
//ch-1
gotest12(ch)
for{
}
結(jié)果:
繼續(xù)執(zhí)行定時(shí)器
重置定時(shí)器
Demo:
funcmain(){
//創(chuàng)建一個(gè)一個(gè)定時(shí)器
fmt.Println("定時(shí)器開始")
myT:=time.NewTimer(7*time.Second)//設(shè)置7秒后執(zhí)行一次
//重置定時(shí)器為1s后執(zhí)行
myT.Reset(1*time.Second)
-myT.C
fmt.Println("1s時(shí)間到",time.Now().Unix())
for{
?結(jié)果:
定時(shí)器開始
1s時(shí)間到1648268475
Ticker
Ticker也是定時(shí)器,它是一個(gè)周期性的定時(shí)器使用場(chǎng)景2
設(shè)置3秒執(zhí)行一次Demo
packagemain
import(
"fmt"
"time"
funcmain(){
ticker:=time.NewTicker(3*time.Second)
deferticker.Stop()
forrangeticker.C{
fmt.Println("執(zhí)行的業(yè)務(wù)邏輯")
結(jié)果:
tickertickerticker...
tickertickerticker...
tickertickerticker...
gocron
一個(gè)第三方庫(kù)實(shí)現(xiàn)定時(shí)任務(wù)場(chǎng)景2
安裝
goget-u/go-co-op/gocron
s:=gocron.NewScheduler(time.UTC)
s.Every(5).Seconds().Do(func(){...})
s.Every("5m").Do(func(){...})
s.Every(5).Days().Do(fu
s.Every(1).Month(1,2,3).Do(func(){...})
s.Every(1).Day().At("10:30").Do(func(){...})
s.Every(1).Day().At("10:30;08:00").Do(func(){...})
s.Every(1).Day().At("10:30").At("08:00").Do(func(){...})
s.Every(1).MonthLastDay().Do(func(){...})
s.Every(2).MonthLastDay().Do(func(){...})
s.Cron("*/1****").Do(task)
s.StartAsync()
s.StartBlocking()
Demo
packagemain
import(
"fmt"
"time"
"/go-co-op/gocron"
funccron1(){
fmt.Println("cron1")
funccron2(){
fmt.Println("cron2")
funcmain(){
timezone,_:=time.LoadLocation("Asia/Shanghai")
s:=gocron.NewScheduler(timezone)
//每秒執(zhí)行一次
s.Every(1).Seconds().Do(func(){
gocron1()
//每秒執(zhí)行一次
s.Every(1).Se
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 執(zhí)業(yè)護(hù)士考試常見藥物查詢?cè)囶}與答案
- 2025年語(yǔ)文考試復(fù)習(xí)的成功經(jīng)驗(yàn)試題及答案
- 2025年執(zhí)業(yè)醫(yī)師考試主觀題試題及答案
- 努力前行衛(wèi)生資格考試試題及答案
- 行政法與社會(huì)服務(wù)模式再造的聯(lián)系試題及答案
- 行政法學(xué)的法律適用與實(shí)踐指導(dǎo)試題及答案
- 2025年經(jīng)濟(jì)法概論測(cè)試模擬試題及答案
- 2025年經(jīng)濟(jì)法考試模擬試卷試題及答案
- 2025年主管護(hù)師考試全方位試題及答案
- 為2025年經(jīng)濟(jì)法概論考試準(zhǔn)備的試題與答案
- (完整版)北郵英語(yǔ)統(tǒng)考題庫(kù)
- 房屋買賣合同范本模版模板
- 第五課 在和睦家庭中成長(zhǎng) 說(shuō)課稿-2024-2025學(xué)年高中政治統(tǒng)編版選擇性必修二法律與生活
- 實(shí)+用法律基礎(chǔ)-形成性考核任務(wù)一-國(guó)開(ZJ)-參考資料
- 農(nóng)業(yè)昆蟲學(xué)-形考測(cè)試一-國(guó)開(ZJ)-參考資料
- 環(huán)保組織項(xiàng)目監(jiān)督管理制度
- GB/T 23473-2024林業(yè)植物及其產(chǎn)品調(diào)運(yùn)檢疫規(guī)程
- 山東虛擬電廠商業(yè)模式介紹
- 低分子肝素注射方法
- 人教版八年級(jí)體育 1.2常見運(yùn)動(dòng)損傷的預(yù)防和緊急處理 教案
- 【課件】在奉獻(xiàn)中成就精彩人生 2024-2025學(xué)年統(tǒng)編版道德與法治七年級(jí)上冊(cè)
評(píng)論
0/150
提交評(píng)論