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格式,如果需要导出的 ...
随机推荐
- canvas 绘制坐标轴
结果: 代码: <!DOCTYPE html> <html> <head lang="en"> <meta charset="U ...
- Python3 pyinotify 监视文件、文件夹修改
/************************************************************************************ * Python3 pyin ...
- [EMWIN]FRAMEWIN 与 WINDOW 的使用注意
1.对于window控件,选中这类型控件的时候直接选中对应句柄即可: WM_InvalidateWindow(hWin); WM_SelectWindow(hWin); WM_CreateTimer( ...
- 【占位】HihoCoder 1160 : 攻城略地(并查集好题)
攻城略地 时间限制:2000ms 单点时限:1000ms 内存限制:256MB 描述 A.B两国间发生战争了,B国要在最短时间内对A国发动攻击.已知A国共有n个城市(城市编号1, 2, …, n),城 ...
- python Beautiful Soup的使用
上一节我们介绍了正则表达式,它的内容其实还是蛮多的,如果一个正则匹配稍有差池,那可能程序就处在永久的循环之中,而且有的小伙伴们也对写正则表 达式的写法用得不熟练,没关系,我们还有一个更强大的工具,叫B ...
- DbEntry 默认 主键ID为long
DbEntry 默认 主键ID为long,如果自己表中的主键ID为int,可以通过以下方式修改: public class Company :DbObjectModel<Company,int& ...
- CF 504E Misha and LCP on Tree——后缀数组+树链剖分
题目:http://codeforces.com/contest/504/problem/E 树链剖分,把重链都接起来,且把每条重链的另一种方向的也都接上,在这个 2*n 的序列上跑后缀数组. 对于询 ...
- 找到最大或最小的N个元素
问题: 想在某个集合中找到最大或最小的N个元素 解决方案: heapq 模块中有两个函数 nlargest() 和 nsmallest() 它们正是我们需要的.例如: import heapq n ...
- 【Python学习笔记】macosx 10.11 python pip install 出现错误OSError: [Errno 1] Operation not permitted:
http://www.cnblogs.com/xiongqiangcs/p/4914049.html pip install --upgrade pip sudo pip install numpy ...
- 如何用FFmpeg API采集摄像头视频和麦克风音频,并实现录制文件的功能
之前一直用Directshow技术采集摄像头数据,但是觉得涉及的细节比较多,要开发者比较了解Directshow的框架知识,学习起来有一点点难度.最近发现很多人问怎么用FFmpeg采集摄像头图像,事实 ...