
Workflows是 Cloudflare 的一项服务,它提供了一个持久的执行引擎,用于构建多步骤的应用程序编排。最初,它只支持 TypeScript,现在它提供了支持Python的 beta 版本,因为据该公司称,Python 是数据管道、人工智能/机器学习以及数据工程师任务自动化的首选语言。
Cloudflare Workflows 建立在Workers和Durable Objects的基础架构之上。后者提供了长时间运行过程所需的状态持久化和协调功能,确保工作流保持其状态,并在失败时可以重试单个步骤。
该公司一年前引入了 Workflows,并详细说明了其功能:
每个 Workflow 的核心构建块是步骤:在应用程序中,可单独重试的组件可以选择性地发出状态。随后,即便后续步骤失败,该状态也会持久化保存。这意味着应用程序不必重新启动,从而允许它更快地从失败场景中恢复,并避免冗余工作。
在最近关于 Python 支持的博客文章中,作者解释说:
多年来,我们一直在为开发人员提供在 Cloudflare 上用 Python 构建这些应用程序的工具。在 2020 年,我们通过Transcrypt将Python引入Workers,然后在 2024 年直接将 Python 集成到workerd中。今年早些时候,我们在 Workers 中添加了对 CPython 的支持,以及在Pyodide中构建的包,如 matplotlib 和 pandas。现在,Python Workflows 也得到了支持,因此开发者可以使用他们最熟悉的语言创建强大的应用程序。
Cloudflare Workflows 使用了持久化执行的基础架构,同时为 Python 用户提供了一种符合 Python 习惯的方式来编写工作流。此外,该公司旨在实现 JavaScript 和 Python SDK 之间的完全功能对等,现在这已经成为可能,因为 Cloudflare Workers 原生支持 Python。
公司的一个重要关注点是确保 Python SDK 的感觉符合“Pythonic”(即遵循 Python 的风格和习惯)。该平台提供了内置的异步操作和并发支持,使开发者能够管理跨步骤的依赖关系,即便任务可能会并发运行。
这是通过两种方法实现的:一种利用 Python 的 asyncio.gather 进行并发执行,它将 JavaScript promise(thenables)代理到 Python awaitable,另一种更符合 Python 习惯的方法是使用 Python 装饰器(@step.do)来定义步骤和依赖关系,允许更清晰地声明有向无环图(Directed Acyclic Graph,DAG)执行流程。引擎自动管理步骤之间的状态和数据流。
(图片来源:X Tweet Matt Silverlock)
引入 Python 为复杂的、长时间运行的应用程序打开了工作流的大门,如下这些应用程序从能够编排中受益:
AI/ML 模型训练:编排像数据集标记、向模型提供数据、等待模型运行完成、评估损失,并在继续循环之前通知人工进行手动调整等序列。
数据管道:通过定义的一组幂等步骤,自动化复杂的摄取和处理管道,确保可靠的数据转换。
AI Agent:构建多步骤的 Agent(例如,一个杂货店的 Agent,它能够编译列表、检查库存并下订单),其中状态持久化和重试对于形成成功的结论至关重要。
最后,GitHub上提供了可用的 Python 工作流样例。
查看英文原文:Cloudflare Workflows Adds Python Support for Durable AI Pipelines







评论