作业调度和跟踪库
项目描述
作业控制
作业调度和跟踪库。
提供调度、运行、跟踪和检索“作业”结果的基本接口。
每个作业定义简单地说就是任何Python可调用项,以及传递给它的参数。
跟踪包括存储:- 函数返回值 - 任何抛出的异常 - 作业执行期间产生的日志消息 - 如果任务支持,则可选的“进度”
状态存储完全与主应用程序解耦。
项目“核心”目前包括两种存储实现
MemoryStorage – 在内存中保留所有数据,适用于开发/测试。
PostgreSQLStorage – 在PostgreSQL数据库中保留所有数据,适用于生产使用。
项目状态
Travis CI构建状态
分支 |
状态 |
---|---|
master |
|
develop |
源代码
源代码托管在GitHub上:https://github.com/rshk/jobcontrol/
并且可以使用以下方式克隆
git clone https://github.com/rshk/jobcontrol.git
Python包索引
项目可以在PyPI上找到: https://pypi.python.org/pypi/jobcontrol
项目文档
文档托管在GitHub页面:(即将推出!) http://rshk.github.io/jobcontrol/
概念
每个作业被定义为要运行的Python函数,带有参数和关键字。
每个作业可以依赖于其他作业;依赖性系统确保在运行特定作业之前构建所有依赖项,并且在构建“更高层次”的作业时重建依赖于的作业。
示例
┌─────────┐ ┌─────────┐ ┌─────────┐ ┌─────────┐ │ │ │ │ │ │ │ │ │ Job A │ → │ Job B │ → │ Job C │ → │ Job D │ │ │ │ │ │ │ │ │ └─────────┘ └─────────┘ └─────────┘ └─────────┘
在运行任务 C 时,需要构建 B;这反过来又需要构建 A。如果指定了 build_deps=True,则将触发构建 C 和 B。否则,构建将因“依赖未满足”错误而终止。
在成功构建 C 后,D 不会过时。如果指定了 build_depending=True,则将触发构建 D。
其他示例:任务 #2 依赖于任务 #2
任务 #1
构建 |
成功? |
时间 |
跳过? |
---|---|---|---|
1 |
TRUE |
1 |
FALSE |
2 |
FALSE |
3 |
FALSE |
3 |
TRUE |
4 |
TRUE |
4 |
TRUE |
5 |
FALSE |
任务 #2
构建 |
成功? |
时间 |
跳过? |
---|---|---|---|
1 |
TRUE |
2 |
FALSE |
不需要重新构建。 |
|||
不需要重新构建。 |
|||
2 |
TRUE |
6 |
FALSE |
变更日志
v0.1a
支持定义任务,包括:函数、参数、关键字参数、依赖项
支持跟踪任务运行,包括开始/结束日期、启动/完成/成功状态和返回值
支持存储任务运行的日志
内存存储(用于状态)
PostgreSQL存储(用于状态)