go-zero-antd实战-4(go-zero添加cron定时任务)

go-zero-antd实战-4(go-zero添加cron定时任务)

后台系统一般都会有定时任务的需求,所以加入cron

创建了一个目录cron如下


├── cmd

│ ├── root.go

│ ├── schedule.go

│ └── userlist.go

├── cronx

│ └── time.go

└── main.go

2 directories, 5 files

root.go中启动了cron,加入了go-zero srvCtx


package cmd

import (

"fmt"

"tapi/internal/config"

"tapi/internal/svc"

"github.com/robfig/cron/v3"

"github.com/zeromicro/go-zero/core/conf"

)

var  svcCtx *svc.ServiceContext

func  Execute() {

c := cron.New(cron.WithSeconds())

// 这里是加入定时任务

ScheduleRun(c)

fmt.Println("定时任务启动...")

go c.Start()

defer c.Stop()

select {}

}

func  init() {

var  c config.Config

conf.MustLoad("../etc/backend.yaml", &c)

svcCtx = svc.NewServiceContext(c)

}

schedule.go只要在其中加入任务即可


func  ScheduleRun(c *cron.Cron) {

c.AddFunc(cronx.EveryMinute(), func() {

fmt.Println("定时任务")

})

// 每分钟定时查询用户信息

c.AddFunc(cronx.Every5s(), userlist)

// 计划任务执行写在这里

}

测试cron

写了一个userlist.go


package cmd

import (

"context"

"fmt"

)

func  userlist() {

u := svcCtx.BkModel.User

d, err := u.WithContext(context.Background()).Debug().First()

if err != nil {

fmt.Println(err)

}

fmt.Println(d)

}

root@tdev:/home/code/go-zero-antd-backend/api/cron# go run main.go

定时任务启动...

2023/02/16 23:13:40 /home/code/go-zero-antd-backend/api/bkmodel/dao/query/user.gen.go:238

[7.589ms] [rows:1] SELECT * FROM `user` ORDER BY `user`.`id` LIMIT 1

&{1 tim 0 123456 1 0 0}

2023/02/16 23:13:45 /home/code/go-zero-antd-backend/api/bkmodel/dao/query/user.gen.go:238

[0.617ms] [rows:1] SELECT * FROM `user` ORDER BY `user`.`id` LIMIT 1

&{1 tim 0 123456 1 0 0}

cron定时任务加入go-zero项目完成

源码已上传

地址

本作品采用《CC 协议》,转载必须注明作者和本文链接
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!