跳过主要内容

数据流配置

Dora 数据流通过YAML文件被定义并配置。 此数据流配置文件指定数据流的节点和它们的输入和输出。 它还允许配置通信参数和启用调试选项。

本文档介绍了数据流文件格式和它最重要的字段。 所有可用字段它们的行为的完整参考,请查看文档 DescriptorNode 结构。

定义节点

在数据流配置文件中最重要的字段是 nodes 字段,它列出了数据流的节点。 每一个节点的ID由一个唯一的 id 定义:

nodes:
- id: foo
path: path/to/the/executable
# ... (见下文)
- id: bar
path: path/to/another/executable
# ... (见下文)

对于每个节点,您需要指定可执行文件或脚本的 path ,Dora在启动节点时应该运行他们。 大多数其他节点字段都是可选的,但您通常希望至少指定一些 inputs 和/或 outputs。

输入与输出

节点可以发送输出消息,其他节点以输入接收这些消息。 全部的输入和输出需要被指定在数据流配置文件。

对于每一个节点,所有输出的ID在 outputs 关键字。 只有指定的输出ID是合法的被用于输出的发送函数,例如 send_output

接收节点可以订阅输出,他们在 inputs 字段被列出。 inputs 字段可被以下格式的一个键值映射:input_id: source_node_id/source_node_output_id

组件按以下定义:

  • input_id是本地标识符可被应用在此输入。 这将映射到 的 'id' 字段Event::Input 事件发送到节点事件循环。
  • source_node_id 应该是节点的 id 字段,被我们想要的订阅发送至输出
  • `source_node_output_id 应该是输出的标识符,被我们想要的订阅

输入/输出 示例

nodes:
- id: example-node
outputs:
- one
- two
- id: receiver
inputs:
my_input: example-node/two

控制节点执行的字段

使用以下字段定义节点的执行方式,包括命令行参数和环境变量。

path (必须)

指定Dora启动数据流时应运行的可执行文件或脚本路径。 这可以指向普通的可执行文件(例如,当使用 Rust 等编译语言时)或 Python 脚本。

nodes:
- id: rust-example
path: target/release/rust-node
- id: python-example
path: ./receive_data.py

查看更多细节:path field documentation

argsenv

使用 args 字段指定应传递到 path 中指定的可执行文件/脚本的命令行参数。 使用 env 字段设置环境变量。

nodes:
- id: example
path: example-node
args: -v --some-flag foo
env:
IMAGE_WIDTH: 640
IMAGE_HEIGHT: 480

控制节点构建的字段

使用 build 字段在dora build定义一个节点如何配置并建立。 所有 build 字段都是可选的。

build

The build 字段指定了用于构建节点时被调用的命令。

- id: build-example
build: cargo build -p receive_data --release
path: target/release/receive_data
- id: multi-line-example
build: |
pip install flash-attn
pip install -e ../../node-hub/dora-phi4
path: dora-phi4

特定处理pip: 构建以 pip 或 pip3 开始的行,两种特定的处理方式: 如果 --uv 参数传递给 dora build 命令,所有 pip/pip3 命令通过uv 包管理器运行(https://docs.astral.sh/uv/)。

git

git 字段允许从 git 仓库下载节点。 这对于分布式数据流特别有用。

当指定一个 git 关键字,dora build 自动化克隆指定仓库(或重复使用现有克隆)。 那么它签出指定的 branch, tag, or rev, 或者它们没有被指定时的默认branch。 然后如果指定它将运行 build 命令。

nodes:
- id: rust-node
git: https://github.com/dora-rs/dora.git
branch: main
build: cargo build -p rust-dataflow-example-node
path: target/debug/rust-dataflow-example-node

算子

操作员是一个实验性的、轻量级节点替代。 算子不是作为单独的进程运行,而是链接到运行时进程中。 这允许在单一地址空间共享运行多种算子(当前不支持Python)。

算子被定义为节点列表的的部分,作为一个运行时节点的子节点。 运行时节点是一个特殊节点,它没有指定 "path" 字段,但包含一个 operators 字段。

其它数据流字段

查看Descriptor 结构以获取支持字段的完整列表。

完整说明

Loading ...