代码拉取完成,页面将自动刷新
package main
import (
"cron"
"mycron"
"time"
"logger"
)
var(
processSet = mycron.NewSet() //当前正在跑的程序集合
log * logger.GwsLogger = logger.GetDeaultLogger(mycron.Log_file)
)
func main() {
jobs, _ := mycron.GetCronList()
c := cron.New()
defer func() {
c.Stop()
}()
//添加jobs
for i := 0; i < len(jobs); i++ {
job := jobs[i]
err := c.AddFunc(job.Time, func() {jobrun(job)}, int(job.Status), int(job.Id), job.STime, job.ETime)
if err != nil{
log.Error(err.Error())
}
}
//start
c.Start()
//@开启 "立即执行" 监听
go atonce()
for {
//监听更新事件
select {
case <-time.After(time.Second):
jobs, _ := mycron.GetModifyList()
for _,job:= range jobs{
err := c.AddFunc(job.Time, func() {jobrun(job)}, int(job.Status), int(job.Id), job.STime, job.ETime)
if err != nil{
log.Error(err.Error())
}
}
mycron.UpdateModifyList()
continue
}
}
}
//cron执行
func jobrun(job mycron.Job) {
defer func() {
if err := recover(); err != nil {
log.Error(err.(string));
processSet.Remove(job.Id)
}
}()
if job.Singleton == 1 && processSet.Has(job.Id) { // 如果是单例而且上次还非未退出
return
}
processSet.Add(job.Id)
job.Run()
processSet.Remove(job.Id)
}
//立即执行事件处理
func atonce() {
for {
//监听更新事件
select {
case <-time.After(time.Second):
jobs, _ := mycron.AtOnce()
for _, job := range jobs {
job.Run()
mycron.UpdateAtOnceList()
continue
}
}
}
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。