如何使用 cmd 参数组织完美流程?
How to organize prefect flow with the using of cmd arguments?
您好,我正在尝试将 prefect 应用于我的项目,该项目使用库 click
来处理命令行参数。下面是一个演示代码片段:
@click.command()
@click.option(
"-p",
"--pages",
type=int,
default=0,
help="...",
)
def main(pages):
print("Running...")
if pages > 0:
a()
else:
b()
print("Finished without errors.")
if __name__ == "__main__":
main()
another_method()
prefect 的文档提到了这个例子:
flow = Flow("hello-flow", tasks=[hello_task])
flow.register(project_name="tester")
但是,如果我需要 运行 程序,比如说 poetry run main.py -p 10
,我需要给出一个固定的命令行参数,还需要 运行 诗歌。在那种情况下,我应该如何组织或重构我的代码以适应 Prefect?
一般来说,使用 Prefect,您不必使用任何这些(click
或 poetry
)即可从 CLI 运行 您的流程,因为Prefect 附带了自己的 CLI。要从 CLI 启动流程 运行,您可以使用:
prefect run -p /path/to/your/flow_file.py
假设您的流程如下所示:
from prefect import task, Flow, Parameter
@task(log_stdout=True)
def hello_world(name):
print(f"Hello {name}!")
with Flow("mini-example") as flow:
name = Parameter("name", default="world")
hw = hello_world(name)
如果您想 运行 在本地使用与“world”不同的参数值,您可以使用 --param
选项:
prefect run -p /path/to/your/flow_file.py --param name=Marvin
然后,一旦您准备好将项目部署到您的 Prefect 后端,您就可以注册它:
prefect register --project yourprojectname -p /path/to/your/flow_file.py
然后您甚至可以触发一个远程流程 运行,它将存储在后端(即 Prefect Cloud 或服务器),使用:
prefect run --name mini-example --project yourprojectname
您好,我正在尝试将 prefect 应用于我的项目,该项目使用库 click
来处理命令行参数。下面是一个演示代码片段:
@click.command()
@click.option(
"-p",
"--pages",
type=int,
default=0,
help="...",
)
def main(pages):
print("Running...")
if pages > 0:
a()
else:
b()
print("Finished without errors.")
if __name__ == "__main__":
main()
another_method()
prefect 的文档提到了这个例子:
flow = Flow("hello-flow", tasks=[hello_task])
flow.register(project_name="tester")
但是,如果我需要 运行 程序,比如说 poetry run main.py -p 10
,我需要给出一个固定的命令行参数,还需要 运行 诗歌。在那种情况下,我应该如何组织或重构我的代码以适应 Prefect?
一般来说,使用 Prefect,您不必使用任何这些(click
或 poetry
)即可从 CLI 运行 您的流程,因为Prefect 附带了自己的 CLI。要从 CLI 启动流程 运行,您可以使用:
prefect run -p /path/to/your/flow_file.py
假设您的流程如下所示:
from prefect import task, Flow, Parameter
@task(log_stdout=True)
def hello_world(name):
print(f"Hello {name}!")
with Flow("mini-example") as flow:
name = Parameter("name", default="world")
hw = hello_world(name)
如果您想 运行 在本地使用与“world”不同的参数值,您可以使用 --param
选项:
prefect run -p /path/to/your/flow_file.py --param name=Marvin
然后,一旦您准备好将项目部署到您的 Prefect 后端,您就可以注册它:
prefect register --project yourprojectname -p /path/to/your/flow_file.py
然后您甚至可以触发一个远程流程 运行,它将存储在后端(即 Prefect Cloud 或服务器),使用:
prefect run --name mini-example --project yourprojectname