gpt4 book ai didi

Prefect2.0 如何仅使用curl 触发流程?

转载 作者:行者123 更新时间:2023-12-05 05:36:02 27 4
gpt4 key购买 nike

这是我非常简单的流程:

from prefect import flow
import datetime



@flow
def firstflow(inreq):
retval={}
retval['type']=str(type(retval))
retval['datetime']=str(datetime.datetime.now())
print(retval)

return retval

我负责 prefect orion 和 prefect agent。

使用 web ui 触发(部署运行)...代理成功拉取并完成工作。

我的问题是如何只使用 curl 来触发?注意:我已经读过 http://127.0.0.1:4200/docs。但我跛脚的大脑找不到如何去做。

注意:

  1. 假设我的流 ID 是:7ca8a456-94d7-4aa1-80b9-64894fdca93b
  2. 我要处理的参数是{'msg':'Hello world'}

盲目尝试

curl -X POST -H 'Content-Type: application/json' http://127.0.0.1:4200/api/flow_runs \
-d '{"flow_id": "7ca8a456-94d7-4aa1-80b9-64894fdca93b", "parameters": {"msg": "Hello World"}, "tags": ["test"]}'

但是猎户座长官说

INFO:     127.0.0.1:53482 - "POST /flow_runs HTTP/1.1" 307 Temporary Redirect

真诚的

-比诺-

最佳答案

当然可以通过 curl 来完成,但它可能会很痛苦,尤其是当您的流程有参数时。有更简单的方法来触发将由后端 API 跟踪的流 - 运行流 Python 脚本,它会产生完全相同的效果。这是因为 Prefect 2.0 的(临时)后端 API 始终在后台处于事件状态,并且所有流运行,即使是从终端启动的流,也会在后端进行跟踪。

关于 curl,看起来您在 flow_runs 之后缺少尾部斜杠。将您的命令更改为该命令应该有效:

curl -X POST -H 'Content-Type: application/json' http://127.0.0.1:4200/api/flow_runs/ \
-d '{"flow_id": "7ca8a456-94d7-4aa1-80b9-64894fdca93b", "parameters": {"msg": "Hello World"}, "tags": ["test"]}'

不过,这条路线可能更有帮助——它将从部署中创建流程运行并将其设置为计划状态——默认状态为待定状态,这会导致流程运行停滞。这应该可以直接工作:

curl -X POST -H 'Content-Type: application/json' \
http://127.0.0.1:4200/api/deployments/your-uuid/create_flow_run \
-d '{"name": "curl", "state": {"type": "SCHEDULED"}}'

关于Prefect2.0 如何仅使用curl 触发流程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73368888/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com