CFCF Static Export ProDOCS
首页/Cloudflare 文档/Cloudflare Workflows 中文文档

Cloudflare Workflows 中文文档

参照官方手册结构整理(数据截至 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。