1 个不稳定版本
0.1.0 | 2021年12月20日 |
---|
#805 in 并发
35KB
623 行
这个库帮助您运行相互依赖的工作流。其模块化设计允许在本地、集群或其他远程计算资源上运行工作。
lib.rs
:
这个库帮助您运行相互依赖的工作流。其模块化设计允许在本地、集群或其他远程计算资源上运行工作。
考虑以下所示的一组工作,其中使用了两种类型的源文件来生成两种类型的中间文件,而这些中间文件又用于生成最终结果。
┌─────────────────┐
┌─────────────────┐ │ Source File B: │
│ Source File A: │ │ - Param1 │
│ - Param1 │ │ - Param2 │
└─────────┬───────┘ └───────┬─────────┘
│ │
│ │
│ ┌──────────┴───────────────┐
│ │ │
│ │ │
│ │ │
▼ ▼ ▼
┌──────────────────────┐ ┌──────────────────────┐
│ Intermediate File A: │ │ Intermediate File B: │
│ - Param1 │ │ - Param1 │
│ - Param2 │ │ - Param2 │
└────────────────┬─────┘ └──────┬───────────────┘
│ │
└─────────┬──────────┘
│
│
▼
┌───────────────┐
│ Final Result: │
│ - Param1 │
│ - Param2 │
└───────────────┘
每种类型的文件都有一个或多个“参数”。
这种依赖关系可以通过以下Job
枚举表示,假设Param1
是整数,Param2
是字符串
enum Job {
SourceFileA {param1: u16},
SourceFileB {param1: u16, param2: &'static str},
IntermediateFileA {param1: u16, param2: &'static str},
IntermediateFileB {param1: u16, param2: &'static str},
FinalResult {param1: u16, param2: &'static str},
}
要使用captain管理此组工作,首先需要在它上实现JobUnit
特质。然后使用工作Scheduler
运行它。运行它的后端是通过选择一个ExecutorBuilder
来选择的。
依赖
~4.5–6.5MB
~109K SLoC