go语言 robfig/cron包 实现定时 调用
package main
import (
"github.com/robfig/cron"
"time"
"fmt"
"os"
log "github.com/cihub/seelog"
)
var (
ttt int
)
const (
logFilePath = "hard/log/test/test.log"
)
func init() {
logLevel := os.Getenv("LOG_LEVEL")
if logLevel == "" {
logLevel = "error"
}
logger, err := log.LoggerFromConfigAsString(`
<seelog minlevel="` + logLevel + `" maxlevel="critical">
<outputs formatid="common">
<console />
<rollingfile formatid="common" type="date" datepattern="2006-01-02" filename="` + logFilePath + `" maxrolls="7"/>
</outputs> <formats>
<format id="common" format="%Date %Time %LEVEL (%File:%Line) - %Msg%n"/>
</formats>
</seelog>
`)
if err != nil {
_ = log.Errorf("load seelog config failed! message: %s", err)
}
err = log.ReplaceLogger(logger)
if err != nil {
_ = log.Error(err)
}
}
func test(){ fmt.Printf("test=%d\n",ttt)
ttt++
}
func main() {
fmt.Println(os.Getenv("GOPATH"))
ttt=1
c := cron.New()
c.AddFunc("0/5 * * * * ?", func() { log.Info("Every hour on the half hour") })
c.AddFunc("0/5 * * * * ?", test)//5秒执行一次,12×5=60,所以一共执行12次
c.Start()
//log.Info("Every hour on the half hour")
time.Sleep(time.Minute) //一分钟后主线程退出
fmt.Println("aaa")
}
----------------------------------------
package main
import (
"github.com/robfig/cron"
// "time"
"fmt"
"os"
log "github.com/cihub/seelog"
)
var (
ttt int
)
const (
logFilePath = "D:\\hard/log/test/test.log"
)
func init() {
logLevel := os.Getenv("LOG_LEVEL")
if logLevel == "" {
logLevel = "error"
}
logger, err := log.LoggerFromConfigAsString(`
<seelog minlevel="` + logLevel + `" maxlevel="critical">
<outputs formatid="common">
<console />
<rollingfile formatid="common" type="date" datepattern="2006-01-02" filename="` + logFilePath + `" maxrolls="7"/>
</outputs> <formats>
<format id="common" format="%Date %Time %LEVEL (%File:%Line) - %Msg%n"/>
</formats>
</seelog>
`)
if err != nil {
_ = log.Errorf("load seelog config failed! message: %s", err)
}
err = log.ReplaceLogger(logger)
if err != nil {
_ = log.Error(err)
}
}
func test(){ fmt.Printf("test=%d\n",ttt)
ttt++
}
func main() {
fmt.Println(os.Getenv("GOPATH"))
ttt=1
c := cron.New()
c.AddFunc("0 33 * * * * ", func() { log.Info("Every hour on the half hour") }) //每小时的第33分钟调用
c.AddFunc("0 33 * * * * ", test)
c.Start()
//log.Info("Every hour on the half hour")
select{} }
-------------
func test(){
log.Error("test")
}
func main() {
c := cron.New()
c.AddFunc("@daily", func() { log.Error("Every hour on the half hour") })//每天调用一次
c.AddFunc("@midnight", test)//每天调用一次(和daily一样)
c.Start()
log.Info("Every hour on the half hour")
time.Sleep(time.Minute)
fmt.Println("aaa")
select{} //阻塞主线程不退出
}
(9) #: 用于确定每个月第几个星期几,只能出现在DayofMonth域。例如在4#2,表示某月的第二个星期三。
go语言 robfig/cron包 实现定时 调用的更多相关文章
- go语言的cron包的简单使用
3.cron举例说明 每隔5秒执行一次:*/5 * * * * ? 每隔1分钟执行一次:0 */1 * * * ? 每天23点执行一次:0 0 ...
- Golang robfig/cron 实现解析
robfig/cron是GO语言中一个定时执行注册任务的package, 最近我在工程中使用到了它,由于它的实现优雅且简单(主要是简单),所以将源码过了一遍,记录和分享在此. 文档:htt ...
- Spring结合Quartz实现多任务定时调用(转载)
Quartz框架提供了丰富的任务调度支持,比如,在 何时执行何种任务,它是一个开源的由OpenSymphony维护的项目,开发者能够在Java EE,或单独的Java SE应用中使用它.无论是简单的任 ...
- Python一键转Jar包,Java调用Python新姿势!
粉丝朋友们,不知道大家看故事看腻了没(要是没腻可一定留言告诉我^_^),今天这篇文章换换口味,正经的来写写技术文.言归正传,咱们开始吧! 本文结构: 需求背景 进击的Python Java和Pytho ...
- Quartz结合SPRING多任务定时调用
定义两个被调度的类 public class QuartzJob { public void work() { System.out.println(Spring Quartz的任务调度1被调用!&q ...
- R语言︱H2o深度学习的一些R语言实践——H2o包
每每以为攀得众山小,可.每每又切实来到起点,大牛们,缓缓脚步来俺笔记葩分享一下吧,please~ --------------------------- R语言H2o包的几个应用案例 笔者寄语:受启发 ...
- Go语言基础之包
Go语言基础之包 在工程化的Go语言开发项目中,Go语言的源码复用是建立在包(package)基础之上的.本文介绍了Go语言中如何定义包.如何导出包的内容及如何导入其他包. Go语言的包(packag ...
- R语言:recommenderlab包的总结与应用案例
R语言:recommenderlab包的总结与应用案例 1. 推荐系统:recommenderlab包整体思路 recommenderlab包提供了一个可以用评分数据和0-1数据来发展和测试推荐算 ...
- 一、SQL系列之~使用SQL语言导出数据及实现定时导出数据任务
一般情况下,SQL数据库中带有导入与导出数据的直接按键操作,点击数据表所在的数据库--任务--导出/导入数据,根据导入/导出向导直接将数据导出即可. 但导出的数据格式多为Excel格式,如果需要导出的 ...
随机推荐
- C#模拟网络POST请求
using System; using System.IO; using System.Net; using System.Text; using System.Collections.Generic ...
- PostgreSQL upset解决在插入过程中重复数据冲突
关于重复行问题: 在SQL Server中则可以自动排出重复行,不需要处理.在Oracle中经常遇到upsert语法,来排出冲突行.在PostgreSQL中,也需要手动排出重复行,否则会爆出错误,up ...
- Git的origin和master分析
首先要明确一点,对git的操作是围绕3个大的步骤来展开的(其实几乎所有的SCM都是这样) 1. 从git取数据(git clone) 2. 改动代码 3. 将改动传回git(git push) 这3个 ...
- 人生苦短之我用Python篇(paramiko模块)
该模块机遇SSH用于连接远程服务器并执行相关操作 基于用户名密码连接: import paramiko # 创建SSH对象 ssh = paramiko.SSHClient() # 允许连接不在kno ...
- 阿里云,腾讯云,等等的云 Ubuntu14.04升级16.04
16.04有很多好处.在此不说了 这几天来回折腾了各种的云,然后发现国内的都没有16.04 但是ubuntu可以直接在线升级 在此记下来升级的过程 不管是腾讯云也好 阿里云也好,或者别的什么云,只要是 ...
- python学习之准备
快速入门:十分钟学会Pythonhttp://python.jobbole.com/43922/python框架http://www.elias.cn/Python/HomePage#toc14[Py ...
- NET Core中使用MediatR实现命令和中介者模式
NET Core中使用MediatR实现命令和中介者模式 https://www.cnblogs.com/yilezhu/p/9866068.html 在本文中,我将解释命令模式,以及如何利用基于命令 ...
- 数据结构(栈&堆 )
在计算机领域,堆栈是一个不容忽视的概念,堆栈是两种数据结构.堆栈都是一种数据项按序排列的数据结构,只能在一端(称为栈顶(top))对数据项进行插入和删除.在单片机应用中,堆栈是个特殊的存储区,主要功能 ...
- 公历和农历转换的JS代码
<!-- function CalConv(M) { FIRSTYEAR = 1936; LASTYEAR = 2031; LunarCal = [ new tagLunarCal(23, 3, ...
- 手把手使用 Webpack 4 建立 VUE 项目
手把手使用 Webpack 4 建立 VUE 项目 安装 node.js 略 安装 cnpm 略 安装 webpack cnpm install webpack -g 安装 vue-cli cnpm ...