#workflow #scheduler #dag #bronze #cron #prelude #macro

bronzeflow

Bronze:Rust 中的工作流调度器

2 个版本

0.1.1 2022 年 11 月 22 日
0.1.0 2022 年 11 月 18 日

#1302Rust 模式

Apache-2.0

72KB
2K SLoC

什么是 bronze?

Bronze:Rust 中的工作流调度器

入门

待办事项

示例

  1. 通过宏 dag 创建工作流,并使用 cron 表达式提交到调度器
use bronzeflow::prelude::*;

fn main() {
    // Create a session to submit task/workflow to scheduler
    let mut s = SessionBuilder::default().build().unwrap();

    // Create a workflow
    let wf = dag!(
        "A" => || println!("Task A") => dag!(
            "A1" => || println!("Task A1"),
            "A2" => || println!("Task A2"),
            "C1" => dag!(
                "C1" => || println!("Task C1") => dag!(
                    "C11" => || println!("Task C11")
                )
            )
        )
    )
    .build()
    .unwrap();

    // Print the dependencies tree
    wf.print_tree();

    // Submit workflow to scheduler
    s.submit("1/2 * * * * *", wf).unwrap();

    // Sleep 5 seconds
    std::thread::sleep(std::time::Duration::from_secs(5));
}

开发

从源代码构建

待办事项

待办事项列表

核心功能

  • 为 dag 和任务添加执行器插件系统。
  • 支持异步函数和例程。
  • 使用 GitHub CI/CD。
  • 从动态链接库(ffi)保存和加载任务。
  • 优化任务设计以更好地扩展。
  • 支持多语言。
  • 添加具有本地事件循环(epoll、kqueue 等)的时间触发器。
  • 添加非线程安全版本以实现高性能。
  • 添加“精确一次”执行语义。
  • 添加统一常见存储支持,该支持将被其他存储插件(如数据库、zk 等)使用。
  • 添加数据库存储。

依赖项

~7–14MB
~164K SLoC