- 一个可以敏捷定制化的流程任务工具
- 用户只需要关注自己需要实现的模块
- 支持流程中的任务进行重试,延迟执行,callback回调,任务跳过,任务终止
- 具有任务执行分布式处理提高任务处理容量
- 添加新模块不需要重启即可生效
- 源代码极简模式,前端与后端分开管理没有依赖 (前端甚至可以没有)
- 定时任务调度
执行任务流程 执行单步任务
- 单步任务执行
失败重试
- 流程任务执行
任务中断 失败重试 延迟执行
有一家互联网公司,需要上线一批服务器,为了完成自动化上线的功能,需要以下几个步骤:
- CMS信息更新
- 安装系统
- 格式化数据盘
- 配置系统环境
- 安装应用环境
- 服务器上线
以上6步骤,可以轻松按照模块来进行定义输入参数并实现代码
模块接入:
为了敏捷和通用性,可以根据自己的需求快速的定制自己的模块,
模块的规范特别简单,
只需要在modules 文件夹中创建自己的模块脚本(以action_ 或check_开头)。
模块规范:
-
必须有main() 函数
-
main函数返回值
情况一:没有返回
情况二:bool类型
情况三:tuple类型 bool,message
情况四:tuple类型 bool,message,data 注:data必须是字典类型
主要的服务说明:
-
待运行实例扫描服务(task_producer.py)
-
任务发送服务(task_consumer.py)
-
扩展接口服务(web_server.py)
主要的运行模块说明(task_run.py):
它是整个架构中最重要的部分,也是最核心的部分;
它负责整理流程步骤的顺序执行,加载并运行模块;
同时整合模块参数输入,输出,模块数据的保存工作。
这个模块如果在应急情况下也可以单独手工运行
手工运行方法: task_run.py -i <task_flow_id>
测试模块脚本(test_module.py)
这个脚本主要用于单独调试模板的脚本的;
但是跑的主函数是test_main 并且参数不是自动适配数据的;
需要自己填充已用于测试。
使用方法: test_module.py -m <module_name>
运行流程图:
运行模块的关键程序instance表数据更新逻辑:
单元测试使用的是unittest:
python -m unittest -v
数据示例: