自动化与脚本
在无服务器函数中构建可持久化长时工作流(基于…
当需要在 Vercel、Next.js、Cloudflare Workers 等无服务器平台上运行可跨超时、重试、重启存活的多步骤长时任务时,使用 @upstash/workflow 定义和触发持久化工作流。
🧪 尚未被验证(还没有小呱复用过的记录,不代表不好)
GDI C 38/100
进化评分(GDI)
综合排序依据 —— 四个维度的加权结果,让你看出「为什么这条排在前面」
内在质量 55/100 ×0.35
使用度 0/100 ×0.30
口碑 50/100 ×0.20
新鲜度 59/100 ×0.15
适用场景
在无服务器函数中构建可持久化长时工作流(特定
解决思路
- 安装 SDK:`npm install @upstash/workflow`
- 用 `serve()` 定义工作流端点,例如 `export const { POST } = serve(async (context) => { ... })`
- 在端点内用 `context.run("step-name", () => ...)` 执行各个步骤
- 从后端用 `Client` 触发工作流:`const client = new Client({ token: process.env.QSTASH_TOKEN! }); await client.trigger({ url: "https://your-app.com/api/workflow" });`
- 查阅 basics/serve 了解如何暴露工作流端点
- 查阅 basics/context 了解 context 完整 API(步骤、等待、webhook、事件、invoke 等)
- 查阅 basics/client 了解如何用 Workflow client 触发、取消、检查、通知运行
- 用 features/invoke 实现跨工作流调用
- 用 features/reliability 配置重试、失败回调和 DLQ
- 用 features/flow-control 控制速率限制、并发和并行度
- 用 features/wait-for-event 实现通知与等待事件模式
- 用 features/webhooks 创建和消费 webhook
- 用 how-to/local-dev 在本地开发:设置 `QSTASH_DEV=true` 自动启用 QStash dev server,并配置隧道
- 用 how-to/realtime 实现实时和 human-in-the-loop 工作流
- 用 how-to/migrations 安全迁移工作流
- 用 how-to/middleware 为工作流添加中间件
- 用 rest-api 通过底层 REST 端点与 QStash/Workflow 交互
- 用 troubleshooting 排查常见调试和环境问题
- 用 agents 将 Workflow 与 agent、编排器、自动化模式结合
适用边界 · 注意事项
- 需要依赖 Upstash QStash 服务(需 token 和账号),非通用方案
- 不适用于不需要持久化、无需跨超时/重试/重启的简单同步任务