为编程爱好者分享易语言教程源码的资源网
好用的代理IP,游戏必备 ____广告位招租____ 服务器99/年 ____广告位招租____ ____广告位招租____ 挂机,建站服务器
好用的代理IP,游戏必备 ____广告位招租____ 服务器低至38/年 ____广告位招租____ ____广告位招租____ 挂机,建站服务器

网站首页 > 网络编程 > 其它综合 正文

Golang 入门系列(八)如何实现定时任务,极简版

三叶资源网 2022-10-18 19:18:50 其它综合 265 ℃ 0 评论

前面讲介绍了Go 语言的基础入门及Golang的语法结构。同时也介绍Golang的接口及协程等内容。感兴趣的朋友可以先看看之前的文章。接下来说一说Golang 如何实现定时任务。

golang 实现定时服务很简单,只需要简单几步代码便可以完成,不需要配置繁琐的服务器,直接在代码中实现。

1、使用的包

github.com/robfig/cron

2、示例

1、创建最简单的最简单cron任务

package main

import (
   "github.com/robfig/cron"
   "fmt"
)

func main() {
   i := 0
   c := cron.New()
   spec := "*/5 * * * * ?"
   c.AddFunc(spec, func() {
      i++
      fmt.Println("cron running:", i)
   })
   c.Start()

   select{}
}

启动后输出如下:

D:\Go_Path\go\src\cronjob>go run multijob.go
cron running: 1
testJob1...
testJob2...
testJob1...
cron running: 2
testJob2...
testJob1...
testJob2...
cron running: 3
cron running: 4
testJob1...
testJob2...

2、多个定时cron任务

package main

import (
    "github.com/robfig/cron"
    "fmt"
    )

type TestJob struct {
}

func (this TestJob)Run() {
    fmt.Println("testJob1...")
}

type Test2Job struct {
}

func (this Test2Job)Run() {
    fmt.Println("testJob2...")
}

//启动多个任务
func main() {
    i := 0
    c := cron.New()

    //AddFunc
    spec := "*/5 * * * * ?"
    c.AddFunc(spec, func() {
        i++
        fmt.Println("cron running:", i)
    })

    //AddJob方法
    c.AddJob(spec, TestJob{})
    c.AddJob(spec, Test2Job{})

    //启动计划任务
    c.Start()

    //关闭着计划任务, 但是不能关闭已经在执行中的任务.
    defer c.Stop()

    select{}
}

启动后输出如下:

D:\Go_Path\go\src\cronjob>go run multijob.go
cron running: 1
testJob1...
testJob2...
testJob1...
cron running: 2
testJob2...
testJob1...
testJob2...
cron running: 3
cron running: 4
testJob1...
testJob2...

3、cron 表达式

Go 实现的cron 表达式的基本语法跟linux 中的 crontab基本是类似的。cron(计划任务),就是按照约定的时间,定时的执行特定的任务(job)。cron 表达式 表达了这种约定。 cron 表达式代表了一个时间集合,使用 6 个空格分隔的字段表示。如果对cron 表达式不清楚的,可以看看我之前介绍quartz.net 的文章:《Quartz.NET总结(二)CronTrigger和Cron表达式 》。


4、最后

以上,就将Golang中如何创建定时任务做了简单介绍,实际使用中,大家可以可结合配置需要定时执行的任务。


推荐阅读:

Golang 入门系列(六)理解Go协程Goroutine,这篇就够了!

Golang 入门系列(四)Golang中的interface,一看就明白

Golang 入门系列(三)打好基本功: Golang 语法基础!

SpringBoot入门系列(一)如何快速创建SpringBoot项目

Nginx总结(六)nginx实现负载均衡

来源:三叶资源网,欢迎分享,公众号:iisanye,(三叶资源网⑤群:21414575

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

百度站内搜索
关注微信公众号
三叶资源网⑤群:三叶资源网⑤群

网站分类
随机tag
s5代理集群组件移动例程聊呗协议高性能JSON库API例程登录线程池操作京东M端点选源码多线程模板进程保护打印窗口svg图片转换智慧职教幻影动图特效正则整理排序扫码枪数据获取PPT采集预览微信发卡机器人微博降权Vstart
最新评论