在Dagster的GraphQL API调用ExecutePipeline时,$repositoryLocationName取值应为多少?
解决Dagster GraphQL API中
repositoryLocationName参数的问题 你遇到的PipelineNotFoundError核心原因就是repositoryLocationName参数的值不正确——这个参数用来指定你的代码仓库所在的位置标识,填错了就会导致Dagster找不到对应的流水线。
如何获取正确的repositoryLocationName值
最准确的方式是通过GraphQL查询来获取所有已加载的仓库位置信息:
- 打开Dagit的GraphQL Playground(就是你用来执行mutation的那个页面)
- 执行以下查询语句:
query FetchRepositoryLocations { repositoryLocations { name repositories { name pipelines { name } } } }
- 在返回的结果里,找到包含
"name": "my_repo"的仓库项,它所属的外层name字段值就是你需要的repositoryLocationName。
验证参数一致性
拿到正确的位置名称后,还要确认这几个参数和查询结果完全匹配(Dagster对名称大小写敏感):
repositoryName:要和查询结果里仓库的name一致pipelineName:要和该仓库下流水线的name一致mode:确保你的流水线确实有dev这个模式(可以在查询结果里的流水线详情里确认,或者查看你的代码定义)
修正后的示例参数
假设查询到的repositoryLocationName是local_dev_location,你的参数应该类似这样:
{ "repositoryName": "my_repo", "repositoryLocationName": "local_dev_location", "pipelineName": "my_pipeline", "mode": "dev", "runConfigData": {"your": "config", "here": "values"} }
本地开发的常见情况
如果是用dagster dev或dagit直接启动本地代码,repositoryLocationName通常会是你的代码目录对应的标识,比如如果你的仓库是通过load_assets_from_modules这类方式加载的,查询结果里的名称可能是类似__main__或者你的Python模块名,但还是以实际查询结果为准。
内容的提问来源于stack exchange,提问作者Atticus
相关产品推荐
相关产品推荐

