grapeTimer 时间调度器开源项目

我要开发同款
匿名用户2017年05月29日
52阅读
开发技术GO语言
所属分类Google Go、作业/任务调度、程序开发
授权协议MIT

作品详情

grapeTimer时间调度器

一款粗粒度的时间调度器,可以帮你通过一些字符串快速并简单的创建时间任务。

用于游戏服务端的优化设计,大量并行的时间调度方式。

Author:Koangel

Blog: https://koangel.github.com

Weibo: @koangel

Homepage: 未完成

简单介绍:

通过命令格式创建time.Time

简洁的Api格式,轻度且可拆分的函数库

快速创建调度器

可控的调度器时间粒度

高性能的并发调度

时间周期,次数多模式可控[支持每天,每周,每月]

*可选择对调度器保存或内存执行[待实现]

*生成可保存的调度器字符串并反向分析他生成调度器[待实现]

不依赖第三方库

安装方法go get -u -v github.com/koangel/grapeTimer基本用法// 初始化一个1秒钟粒度的调度器,ars代表是否自动设置运行为并行模式grapeTimer.InitGrapeScheduler(1*time.Second, true)// 启动一个单次执行的调度器,1秒时间,基本tick单位为毫秒Id := grapeTimer.NewTickerOnce(1000, exec100, nil)// 启动一个1秒为周期的 循环timerId = grapeTimer.NewTickerLoop(1000, exec100Loop, nil)// 启动一个每日规则的定时器,参数为args dataId = grapeTimer.NewTimeDataOnce("Day 13:59:59", exeDayTime, "args data")// 启动一个每日循环规则的定时器,参数为args dataId = grapeTimer.NewTimeDataLoop("Day 13:59:59", exeDayTime, "args data")

所有执行函数请保持以下函数格式:

func exec100(args interface{}) {fmt.Printf("exec100")}func exec100Loop(args interface{}) {fmt.Printf("exec100Loop")}func exeDayTime(args interface{}) {}停止计时器// 将自动返回的ID作为参数传入可停止持续循环的TIMERgrapeTimer.StopTimer(Id)参数设置// 设置启用日志调试模式,建议正式版本关闭他grapeTimer.CDebugMode = true// 调用分析器使用的时区,可以个根据不同国家地区设置 grapeTimer.LocationFormat = "Asia/Shanghai"// 开启异步调度模式,在此模式下 timer执行时会建立一个go,不会阻塞其他timer执行调度,建议开启grapeTimer.UseAsyncExec = true保存调度器待添加生成调度器字符串待添加可用格式说明

调度器有轻度的日期模式分析体系,可提供每日,每周,每月的时间日期生成方式,具体格式如下:

关键字格式说明DayDay00:00:00生成每日的日期时间WeekWeek100:00:00生成每周的日期时间,0~6分别代表周日到周六MonthMonth100:00:00生成每月该日期的时间,建议不要使用20日之后的日期

以上日期如果超过时间自动生成下一个时间,每月时间使用时,如本月不存在该日期,则直接返回错误。

代码示例:

vtime, err := grapeTimer.Parser("Day 13:59:59") // 返回值为标准的*time.Timeif err != nil {// 处理错误...}        vtime, err = grapeTimer.Parser("Week 6 23:59:59")if err != nil {// 处理错误...}vtime, err = grapeTimer.Parser("Month 26 13:59:59")if err != nil {// 处理错误...}

代码输出:

2017-05-24 13:59:59 +0800 CST
声明:本文仅代表作者观点,不代表本站立场。如果侵犯到您的合法权益,请联系我们删除侵权资源!如果遇到资源链接失效,请您通过评论或工单的方式通知管理员。未经允许,不得转载,本站所有资源文章禁止商业使用运营!
下载安装【程序员客栈】APP
实时对接需求、及时收发消息、丰富的开放项目需求、随时随地查看项目状态

评论