zoukankan      html  css  js  c++  java
  • TSINGSEE青犀视频结构化智能分析平台开发Golang定时任务库gocron介绍

    TSINGEEE青犀视频内视频平台都已经具备成熟完善的体系,不仅具备稳定可靠的流媒体视频结构化智能分析平台,还有播放器及推流等组件。

    在开发EasyDSS、EasyRTC、EasyNVR、EasyCVR等项目时,经常会有定时几分钟或者定时几秒执行一次任务的操作。如果使用Go官方提供的定时器方式,使用起来比较难用,且不方便管理任务。因此使用 github 中开源的定时任务库进行定时任务操作。

    gocron 的最开始仓库地址为以下的地址:
    https://github.com/jasonlvhit/gocron

    目前不少人使用的是该仓库的 gocron,但是 2020 年时,已经联系不上了该仓库的拥有者,因此修改了仓库地址为:
    https://github.com/go-co-op/gocron

    该仓库修改的 gocron 更方便使用,因此主要介绍该仓库的使用。

    func ExampleJob_LastRun() {
       s := gocron.NewScheduler(time.UTC)
       job, _ := s.Every(1).Second().Do(task)
       s.StartAsync()
    
       fmt.Println("Last run:", job.LastRun())
    }
    

    以上代码首先使用 gocron 的 NewScheduler 方法创建一个任务队列,然后就是定时任务的执行。
    其中 s.StartAsync() 如果该方法运行,会立刻运行执行一次 task 函数,如果不运行该代码,则会 1s 后才运行一次 task 任务。

    该库还提供了其他很好用的方法:

    _, _ = s.Every(1).Second().Do(task)
    _, _ = s.Every(1).Minute().Do(task)
    _, _ = s.Every(1).Month(1).Do(task)
    _, _ = s.Every(1).Day().At("10:00").Do(task)
    _, _ := s.Every(1).Day().Tuesday().Do(task)
    _, _ = s.Every(1).Week().Weekday(time.Monday).Do(task)
    

    每周、每天以及每周的周几、每天的几点该库都提供了对应的方法,非常方便实用。

  • 相关阅读:
    mysql查询缓存
    Mysql 通过binlog日志恢复数据
    mysqlbinlog命令详解
    修改vsftpd默认端口21
    centos 卸载vsftpd方法
    linux挂载u盘和卸载
    Linux下搭建FTP服务器
    fastjson SerializerFeature详解
    Spring JPA使用CriteriaBuilder动态构造查询
    jdk之jps的用法
  • 原文地址:https://www.cnblogs.com/TSINGSEE/p/14637613.html
Copyright © 2011-2022 走看看