项目地址: https://github.com/LampScript/cron
一句话说明白:添加了 @interval
前缀用来执行定时任务,每个任务交替进行,不会因为某几次任务执行时间过长导致多个任务同时执行。
背景。在公司做项目的时候用到这个包写定时任务,考虑到单次任务在数据量大的时候执行速度慢,上一个没执行完下个任务又开始跑了,数据高峰时期可能会有问题,看下源代码是每次任务都一个协程单独跑,所以可能会有问题。
思考。读完源代码后思考了一下感觉实现起来并不会太难,每个任务作者封装在一个实体数组中的,并且按下次执行时间从早到晚排序,支持运行时插入。
动手。考虑到任务执行时间不可预测,每次执行 @interval 执行时将此任务剔除所有定时任务列表,并且执行完成后再添加回去,并且排序。
最后。pr 已经提给原作者。
第一次给开源项目贡献代码,求夸夸。
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.