是否自动注册新的州长流量



如果本地代理正在运行,是否有一种机制可以自动注册流/新流,而不必手动在每个代理上运行例如flow.register(...)

在airflow中,我相信他们有一个过程,可以定期扫描指定的airflow主文件夹中名称中有dag的任何文件,然后在其中搜索DAG对象。如果它找到了它们,就会加载它们,这样就可以通过UI访问它们,而无需手动"注册"它们。

州长也有类似的情况吗。因此,例如,如果我刚刚创建了以下文件test_flow.py,而不必运行它或添加flow.run_agent(),是否有一种方法可以让它神奇地注册并通过UI访问:(-只需它存在于适当的位置?

# prefect_home_folder/test_flow.py
import prefect
from prefect import task, Flow
@task
def hello_task():
logger = prefect.context.get("logger")
logger.info("Hello, Cloud!")
flow = Flow("hello-flow", tasks=[hello_task])
flow.register(project_name='main')

我可以写一个与气流过程具有类似行为的脚本,定期扫描文件夹并注册流,但我想知道这是否有点麻烦,或者是否有更好的解决方案,我正在调整是否过多地考虑气流?

好问题(还有很棒的用户名!(-简而言之,我建议你在Airflow方面考虑得太多了。有几个原因目前在预取中不可用:

  • 显式优于隐式
  • 预取流不局限于居住在一个地方,也不局限于具有相同的运行时环境;这使得自动发现流+从单个代理进程重新序列化流变得复杂(不需要与提交的流共享相同的运行时环境(
  • 代理最好被认为是由部署基础设施而不是流存储进行参数化的

理想情况下,对于生产工作流,您应该使用CI/CD流程,以便在任何时候更改代码时,都会触发一个自动作业来重新注册流。一些可能有用的评论:

  • 您实际上不需要为每一次可能的代码更改重新注册流;例如,如果您在示例中更改了hello_task记录的消息,您可以简单地将流重新保存到其原始位置(这看起来像什么取决于您使用的存储类型(。最终,您只需要在有关流的任何元数据(重试设置、任务名称、依赖关系等(发生更改时重新注册
  • 您可以使用flow.register("My Project", idempotency_key=flow.serialized_hash())自动捕获此信息;只有在流的后端表示以某种方式发生更改时,此模式才会注册新版本

最新更新