当定义在模块中时如何启动 grpc 服务器
How to start the grpc server when definitions are in a module
我的项目结构如下所示:
- /definitions(对于所有 dagster python 定义)
__init__.py
- repositories.py
- /交换
- pipelines.py
- ...
- ...
- workspace.yaml
我已经尝试 运行 grpc 服务器使用各种方法,尤其是以下方法(从项目根目录开始):
dagster api grpc -h 0.0.0.0 -p 4000 -f definitions/repositories.py
dagster api grpc -h 0.0.0.0 -p 4000 -m definitions
dagster api grpc -h 0.0.0.0 -p 4000 -m definitions.repositories
第一个命令产生以下错误:
dagster.core.errors.DagsterImportError: Encountered ImportError: attempted relative import with no known parent package
while importing module repositories from file C:\Users\Klaus\PycharmProjects\dagsterexchangerates\definitions\repositories.py. Consider using the module-based options -m
for CLI-based targets or the python_package
workspace.yaml target.
第二个和第三个命令产生以下错误:
(stacktrace comes before this)
ModuleNotFoundError: No module named 'definitions'
如何解决?
编辑:
我已将正在处理的示例的当前版本上传到 GitHub:https://github.com/kstadler/dagster-exchangerates
编辑2:
反映目录结构的变化
很抱歉给您带来麻烦 - 这里有几个选项可以让您的服务器 运行ning。
要使其与“-f”选项一起使用,需要将相对导入替换为绝对导入。看起来像这样:
-from .pipelines import exchangerates_pipline
-from .partitions import year_partition_set
+from definitions.pipelines import exchangerates_pipline
+from definitions.partitions import year_partition_set
(这与您尝试直接 运行 python definitions/repositories.py
时会遇到的错误相同)。
我仍在研究为什么第三个“-m”选项没有按我预期的方式工作。奇怪的是,以下命令似乎对我有用,应该接近相同:
python -m dagster.grpc -h 0.0.0.0 -p 4000 -m definitions.repositories
顺便说一句,您的示例包含一个 workspace.yaml,它应该会导致 dagit 和其他 Dagster 进程自动为您启动该模块的 gRPC 服务器 - 因此根据您的目标,您可能不需要 运行 dagster api grpc
你自己。
我的项目结构如下所示:
- /definitions(对于所有 dagster python 定义)
__init__.py
- repositories.py
- /交换
- pipelines.py
- ...
- ...
- workspace.yaml
我已经尝试 运行 grpc 服务器使用各种方法,尤其是以下方法(从项目根目录开始):
dagster api grpc -h 0.0.0.0 -p 4000 -f definitions/repositories.py
dagster api grpc -h 0.0.0.0 -p 4000 -m definitions
dagster api grpc -h 0.0.0.0 -p 4000 -m definitions.repositories
第一个命令产生以下错误:
dagster.core.errors.DagsterImportError: Encountered ImportError:
attempted relative import with no known parent package
while importing module repositories from file C:\Users\Klaus\PycharmProjects\dagsterexchangerates\definitions\repositories.py. Consider using the module-based options-m
for CLI-based targets or thepython_package
workspace.yaml target.
第二个和第三个命令产生以下错误:
(stacktrace comes before this)
ModuleNotFoundError: No module named 'definitions'
如何解决?
编辑: 我已将正在处理的示例的当前版本上传到 GitHub:https://github.com/kstadler/dagster-exchangerates
编辑2: 反映目录结构的变化
很抱歉给您带来麻烦 - 这里有几个选项可以让您的服务器 运行ning。
要使其与“-f”选项一起使用,需要将相对导入替换为绝对导入。看起来像这样:
-from .pipelines import exchangerates_pipline
-from .partitions import year_partition_set
+from definitions.pipelines import exchangerates_pipline
+from definitions.partitions import year_partition_set
(这与您尝试直接 运行 python definitions/repositories.py
时会遇到的错误相同)。
我仍在研究为什么第三个“-m”选项没有按我预期的方式工作。奇怪的是,以下命令似乎对我有用,应该接近相同:
python -m dagster.grpc -h 0.0.0.0 -p 4000 -m definitions.repositories
顺便说一句,您的示例包含一个 workspace.yaml,它应该会导致 dagit 和其他 Dagster 进程自动为您启动该模块的 gRPC 服务器 - 因此根据您的目标,您可能不需要 运行 dagster api grpc
你自己。