项目地址: https://github.com/LampScript/cron
一句话说明白:添加了 @interval
前缀用来执行定时任务,每个任务交替进行,不会因为某几次任务执行时间过长导致多个任务同时执行。
背景。在公司做项目的时候用到这个包写定时任务,考虑到单次任务在数据量大的时候执行速度慢,上一个没执行完下个任务又开始跑了,数据高峰时期可能会有问题,看下源代码是每次任务都一个协程单独跑,所以可能会有问题。
思考。读完源代码后思考了一下感觉实现起来并不会太难,每个任务作者封装在一个实体数组中的,并且按下次执行时间从早到晚排序,支持运行时插入。
动手。考虑到任务执行时间不可预测,每次执行 @interval 执行时将此任务剔除所有定时任务列表,并且执行完成后再添加回去,并且排序。
最后。pr 已经提给原作者。
第一次给开源项目贡献代码,求夸夸。
1
Takamine 2019-08-11 10:19:21 +08:00 via Android
夸夸你,虽然标题和描述我都没看懂。_(:з」∠)_
|
2
Miller5991 OP 好尴尬。。其实就是定时任务如果任务执行时间超过设置的间隔时间的话,就会都两个协程同时做一件事情。我加了一个 feature 来避免这个情况。
|