/SmartTask

Primary LanguagePython

SmartTask

项目起因

实验室的GPU服务器管理太混乱, 我写了个脚本检查GPU资源, 有资源的时候把自己的程序运行起来,简单来说就是一个循环定时任务, 于是乎,想把这个脚本拓展一下,造个简单的轮子。

项目目标

  1. 定时任务
  2. 任务运行状态的监听和管理
  3. 可以自定义任务和触发条件
  4. 可以多机分配任务

项目进度

  • 2021/01/16 完成单机下的基本结构
  • 2021/01/16 定时任务:用多层时间轮管理定时任务
  • 2021/01/18 定时任务:引入cron表达式定时触发任务
  • 2021/01/20 增加任务类型的处理
  • 2021/01/20 针对python类型做了型别约束工具, 替代property简化代码
  • 2021/01/21 为类型约束添加SelfType类型,解决类变量对自身类别的引用问题
  • 2021/01/21 增加任务执行回调, 监听任务过程或任务完成状态
  • 2021/01/22 cron 获取延时,因为时间轮的间隔大于真实时间延时,延时可能为0,对于时间轮来说,就延时了一个周期,目前当延时为0,将延时修改为1
  • 2021/01/22 对 TaskRunCondition run / check 调用和返回进行了修改,加入NoFit类表示不符合条件时的返回值
  • 2021/01/22 对于事件回调,增加了新的事件RUN_NO_FIT
  • 2021/01/22 修改了NIVDIAGPUMemoryLimit条件,并进行了测试
  • 2021/01/22 多定时任务情况,时间轮推动过程可能出现负时间
  • 2021/01/22 修复多定时任务负时间bug, 用固定时间间隔代替原先延时优先队列推动时间轮,对于大间隔定时任务,会出现较多空推进,适用小间隔的任务。
  • 2021/01/23 恢复优先队列推进,改进原先优先队列推进,采取的任务产生方式,修复原存bug