zoukankan      html  css  js  c++  java
  • Go 语言中的两个定时任务库

    今天给大家介绍两个 Go 语言可以用来做定时任务的库,直接上 demo 就好啦。

     1. robfig/cron

    执行如下命令进行安装:

    go get -u github.com/robfig/cron

    每分钟执行一次:

    package main

    import (
        "log"

        "github.com/robfig/cron"
    )

    func main() {
        i := 0
        c := cron.New()
        spec := "0 */1 * * * *"
        c.AddFunc(spec, func() {
            i++
            log.Println("execute per second", i)
        })
        c.Start()
        select {}
    }

    其中注意select的用法:
    golang 的 select 的功能和 select, poll, epoll 相似, 就是监听 IO 操作,当 IO 操作发生时,触发相应的动作。

    每天上午9点到12点的第2和第10分钟执行:

    package main

    import (
        "fmt"

        "github.com/robfig/cron"
    )

    func main() {
        spec := "2,10 9-12 * * *" // 每天上午9点到12点的第2和第10分钟执行
        c := cron.New()
        c.AddFunc(spec, myFunc)
        c.Start()
        select {}
    }

    func myFunc() {
        fmt.Println("execute")
    }

    2.  jasonlvhit/gocron

    执行如下命令进行安装:

    go get -u github.com/jasonlvhit/gocron

    每隔1秒执行一个任务,每隔4秒执行另一个任务:

    package main

    import (
        "fmt"
        "time"

        "github.com/jasonlvhit/gocron"
    )

    func task() {
        fmt.Println("I am runnning task.", time.Now())
    }
    func superWang() {
        fmt.Println("I am runnning superWang.", time.Now())
    }

    func main() {
        s := gocron.NewScheduler()
        s.Every(1).Seconds().Do(task)
        s.Every(4).Seconds().Do(superWang)

        sc := s.Start() // keep the channel
        go test(s, sc)  // wait
        <-sc            // it will happens if the channel is closed
    }

    func test(s *gocron.Scheduler, sc chan bool) {
        time.Sleep(8 * time.Second)
        s.Remove(task) //remove task
        time.Sleep(8 * time.Second)
        s.Clear()
        fmt.Println("All task removed")
        close(sc) // close the channel
    }
  • 相关阅读:
    非线性滤波:中值滤波;双边滤波
    线性滤波:方框滤波、均值滤波、高斯滤波
    输入输出XML和YAML文件
    图像对比度、亮度值调整
    opencv图像混合,分离颜色通道、多通道图像混合
    访问图像的三种方法
    Opencv
    INSERT增加数据记录
    MySQL 语言大全
    text
  • 原文地址:https://www.cnblogs.com/cheyunhua/p/15618258.html
Copyright © 2011-2022 走看看