beego的定时任务

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/benben_2015/article/details/80599803

beego的toolbox模块,包括了以下几个功能:健康检查、性能调试、访问统计、计划任务。今天要了解的就是这个计划任务功能,首先你需要安装这个包,github.com/astaxie/beego/toolbox。下面我们具体看如何使用,以一个例子演示。

package main

import (
    "github.com/astaxie/beego"
    "github.com/astaxie/beego/toolbox"
    "fmt"
    "time"
)

func main() {
    tk := toolbox.NewTask("myTask", "0 07 13 * * *", func() error { fmt.Println("hello world"); return nil })
    err := tk.Run()
    if err != nil {
        fmt.Println(err)
    }
    toolbox.AddTask("myTask", tk)
    toolbox.StartTask()
    time.Sleep(6 * time.Second)
    toolbox.StopTask()
    beego.Run()
}

函数NewTask(func NewTask(tname string,spec string,f TaskFunc))会返回一个新的任务,它需要三个参数:tname表示任务名称,spec为任务时间描述,f为要执行的函数。

spec详解

beego中的spec设计参考Linux中cron的配置。其中前6个字段依次分别表示:秒钟:0-59、分钟:0-59、小时:1-23、日期:1-31、月份:1-12、星期:0-6(0 表示周日)。下面是一些特殊符号以及简单示例。

符号 含义 示例
* 表示任何时刻
, 表示分割 如第三段里:2,4,表示 2 点和 4 点执行
表示一个段 如第三端里: 1-5,就表示 1 到 5 点
/n 表示每个n的单位执行一次 如第三段里,*/1, 就表示每隔 1 个小时执行一次命令。也可以写成1-23/1
示例 详细含义
0/30 * * * * * 每 30 秒 执行
0 43 21 * * * 21:43 执行
0 0 17 * * 1 每周一的 17:00 执行
0 0,10 17 * * 0,2,3 每周日,周二,周三的 17:00和 17:10 执行
0 0 21 * * 1-6 周一到周六 21:00 执行
0 /10 * * * 每隔 10 分 执行
阅读更多

没有更多推荐了,返回首页