点击空白处退出提示
作品详情
这个流程手动管理就会很困难。因此可以把每个独立的部分单独写在一个py文件里面,文件头用注释写了需要的来自其他部分的输入,然后这个项目负责
1. 读取整个目录,解析文件头的信息,建立依赖图
2. 根据依赖关系的顺序依次运行每个任务
3. 保存中间结果,记录每个任务运行时的代码hash以及依赖的hash
4. 监听文件变化,在文件改动时检测每个任务是否需要重新运行,并依次运行所有受影响的项目
5. 提供依赖图,一个简单的webUI,命令行运行接口
我负责所有的工作
webUI使用了NiceGUI开发,对小型webapp来说更方便快捷
文件头使用yaml编码,使用AsyncIO进行并发任务处理,使用进程池在单独进程里面运行任务。
主要难点:
1. 追踪任务状态,以较小的代价更新状态是比较困难的,实现上使用了大量装饰器来简化工作,对代码重构了多次
2. 进程间通信和同步,这个地方踩了不少坑,尤其后期想支持进度条,试了挺多模式
3. 保持单个python文件可运行,为了保持单个python任务在没有这个框架的情况下也能运行,尽量少的对代码进行修改,并且提供了一个运行函数,载入缓存并且运行任务,这样在debug以及开发新任务的时候很有用
图片中展示了一个实际项目的依赖图
声明:本文仅代表作者观点,不代表本站立场。如果侵犯到您的合法权益,请联系我们删除侵权资源!如果遇到资源链接失效,请您通过评论或工单的方式通知管理员。未经允许,不得转载,本站所有资源文章禁止商业使用运营!
下载安装【程序员客栈】APP
实时对接需求、及时收发消息、丰富的开放项目需求、随时随地查看项目状态
评论