1

我正在尝试启动使用 GraphQL API 运行的 Dagster 管道。我有在本地运行的 Dagit 和一个可以通过操场触发的工作管道。

但是,我现在正尝试通过 GraphQL Playground 触发管道,可在/graphql.

我正在使用以下突变:

mutation ExecutePipeline(
  $repositoryLocationName: String!
  $repositoryName: String!
  $pipelineName: String!
  $runConfigData: RunConfigData!
  $mode: String!
)

...因此我提供以下查询参数:

{
  "repositoryName": "my_repo",
  "repositoryLocationName": <???>,
  "pipelineName": "my_pipeline",
  "mode": "dev",
  "runConfigData": {<MY_RUN_CONFIG>}
}

我不确定repositoryLocationName应该取什么值?我尝试了一些但收到以下错误:

{
  "data": {
    "launchPipelineExecution": {
      "__typename": "PipelineNotFoundError"
    }
  }
}

是我正在关注的教程。

4

2 回答 2

1

简短的回答:

每个存储库都位于存储库位置内。如果您自己不提供,Dagster 会提供默认存储库位置名称。要查找位置名称,您可以单击 Dagit 中的存储库选择器,它将位于存储库名称旁边:

在此处输入图像描述

在此示例中,存储库名称为toys_repository,位置名称为dagster_test.toys.repo

更长的答案:

工作区(用 your 定义workspace.yaml)是存储库位置的集合。

目前有三种类型的存储库位置:

  • Python 文件
  • Python 模块
  • gRPC 服务器

每个存储库位置可以有多个存储库。一旦您定义了位置,Dagster 就能够自动查找该位置的所有存储库。在上面的示例中,我将工作区定义为具有单个 Python 模块存储库位置:

load_from:
  - python_module: dagster_test.toys.repo

请注意,只是指定了一个模块而没有指定存储库位置名称,因此 Dagster 分配了一个默认存储库位置名称。

如果我想指定一个位置名称,我会这样做:

load_from:
- python_module:
    module_name: dagster_test.toys.repo
    location_name: "my_custom_location_name"

同样对于 python 文件位置:

load_from:
- python_file: repo.py

或者使用自定义存储库位置名称:

load_from:
- python_file:
    relative_path: repo.py
    location_name: "my_custom_location_name"
于 2020-11-09T13:53:27.490 回答
0

您还可以使用 GraphQL 查询进行查找。从文档中提供的示例开始,您只需添加

repositoryOrigin {
      repositoryLocationName
    }

导致

query PaginatedPipelineRuns {
  pipelineRunsOrError {
  __typename
     ... on PipelineRuns {
           results {
             runId
             pipelineName
             status
             runConfigYaml
             repositoryOrigin {
                repositoryLocationName
             }
          stats {
            ... on PipelineRunStatsSnapshot {
              startTime
              endTime
              stepsFailed
            }
          }
        }
      }
    }
  }

这将为返回的任何运行返回存储库位置名称。在查询之前在 UI 中触发您想要位置名称的管道,该运行将是您的第一个结果。

于 2021-06-08T09:44:36.477 回答