参照官方手册结构整理(数据截至 2026-10,配额/价格以官方最新页面为准)。技术术语保留英文原词。
1. 概述
Cloudflare Workflows 让你在 Workers 上构建持久化、多步骤的应用:把复杂操作拆成步骤,自动重试失败步骤,并把状态保留数分钟、数小时甚至数周——无需管理基础设施。
一句话定位:可暂停、自动重试、跨天跨周持久化的多步编排。
Free 与 Paid 计划均可用。
2. 核心概念
- Step(步骤):不可变、可重试的执行单元;失败自动重试。
- Durable(持久化):步骤间状态自动持久化,挂钟时间无上限(等待 I/O、数据库查询都不计时)。
- 暂停等待:
step.sleep()/step.sleepUntil()可暂停数秒到 365 天;step.waitForEvent()可等外部事件/审批。 - 与 Cron / Queues 的区别:Cron 只定时触发、无状态;Queues 做消息传递;Workflows 做有状态的多步编排。
3. 架构与工作原理
Workflow 实例由 Workers 承载,每步受 CPU 时间限制,但挂钟时间无上限。waiting 状态的实例(sleep/等事件/等重试)不计入并发上限——因此可同时存在数百万个「在睡」的实例。计费从 2026-08-10 起生效。
4. 快速开始
wrangler.jsonc 绑定 Workflow 类:
{
"workflows": [{ "binding": "MY_WORKFLOW", "class_name": "ImageWorkflow" }],
"migrations": [{ "tag": "v1", "new_classes": ["ImageWorkflow"] }]
}
import { WorkflowEntrypoint, WorkflowStep, WorkflowEvent } from "cloudflare:workers";
export class ImageWorkflow extends WorkflowEntrypoint<Env> {
async run(event: WorkflowEvent<{ key: string }>, step: WorkflowStep) {
const data = await step.do("fetch image", async () => {
const obj = await this.env.BUCKET.get(event.payload.key);
return obj.arrayBuffer();
});
await step.waitForEvent("await approval", { event: "approved", timeout: "24 hours" });
await step.do("publish", async () => {
await this.env.BUCKET.put(`public/${event.payload.key}`, data);
});
}
}
5. 配额与限制
| 限制项 | Workers Free | Workers Paid |
|---|---|---|
| 脚本大小 | 3 MB | 10 MB |
| 每 Workflow 步骤数 | 1,024 | 10,000(默认,可配至 25,000) |
| 每步 CPU 时间 | 10 ms | 默认 30 秒(可配至 5 分钟) |
| 每步非流式结果 | 1 MiB | 1 MiB |
| 事件 payload 大小 | 1 MiB | 1 MiB |
| 每实例可持久化状态 | 100 MB | 1 GB |
step.sleep 最大时长 |
365 天 | 365 天 |
| 每日 Workflow 执行数 | 100,000(与 Workers 共享) | 无限 |
| 并发实例数 | 100 | 50,000 |
| 实例创建速率 | 100 / 秒 | 300 / 秒 / 账户(每 workflow 100 / 秒) |
| 排队实例数 | 100,000 | 2,000,000 |
| 已完成实例状态保留 | 3 天 | 30 天 |
| 每实例子请求 | 50 / 请求 | 10,000 / 请求(可配至 1,000 万) |
| 每步最大重试 | 10,000 | 10,000 |
6. 定价
| 计费项 | Workers Free | Workers Paid |
|---|---|---|
| 请求(调用) | 100,000 / 天(与 Workers 共享) | 含 1,000 万 / 月,超出 $0.30 / 百万 |
| CPU 时间 | 10 ms / 调用 | 含 3,000 万 ms / 月,超出 $0.02 / 百万 ms |
| 存储(GB·月) | 1 GB·月 | 含 1 GB·月,超出 $0.20 / GB·月 |
| 步骤 | 3,000 / 天 | 含 50 万 / 月,超出 $0.80 / 10 万步 |
- 等待/空闲(sleep、等事件)不计入 CPU 时间。
- 无额外出网费;与 Workers 共享 CPU 与请求 SKU。
7. 最佳实践
- 把「可能失败且需重试」的逻辑放进
step.do并配退避;长等待用step.sleep/waitForEvent。 - 大二进制输出用
ReadableStream返回或存 R2 后返回引用,避免撑爆实例状态上限。 - 不需要保留已完成/出错实例状态时,用
default_retention缩短保留期省存储费。
8. 适用场景与选型
- 可靠 AI 流程、数据管道、用户生命周期(试用到期/自动化邮件)、人工审批流。
- 需要多步编排+暂停等待 → Workflows;简单异步/削峰 → Queues;共享状态协调 → Durable Objects。