Workflow SDK 新增幂等启动功能 - Vercel

BestBlog编程类文章 · 软件开发

📌 One-Sentence Summary Workflow SDK 的 start() 函数现在可以原子地接纳一次运行并认领一个 hook,在安全处理失败的同时,消除重复启动工作流时的竞态条件。 📝 Summary Workflow SDK 新增了原子化的 start() 函数,可通过令牌同时接纳一次运行并认领一个 hook,取代此前先调用 getHookByToken()、再调用 start() 的两步模式。这消除了可能导致工作流重复启动的竞态窗口。发生重复启动时,函数会抛出 HookConflictError,调用方可通过 resumeHook() 将重复请求的载荷转发给现有运行。该令牌是来自用户业务领域的幂等键,例如订单 ID、发票 ID 等,可确保只有一次运行拥有该令牌。运行获准启动后,hook 会立即存在,因此可以提前缓冲载荷并按顺序交付。 💡 Main Points 原子化启动操作消除竞态条件 新的 start() 函数通过一个步骤原子地接纳运行并认领 hook,取代了存在风险的 getHookByToken() 后接 start() 模式。后者在查询和启动操作之间留下了已知的竞态窗口。 重复启动会通过 HookConflictError 安全失败 尝试重复启动时,函数会抛出包含 conflictingRunId 的 HookConflictError。调用方可以通过 resumeHook() 将重复请求的载荷转发给现有运行,而不是创建新运行。 基于令牌的幂等性确保单一所有权 令牌(例如订单 ID、发票 ID 等)充当幂等键,确保只有一次运行拥有该令牌。重复调用 start() 不会成为新的运行;如果不需要,工作流也可以正常完成,而无需创建 hook。 hook 提前可用,支持载荷缓冲 运行获准启动时,被认领的 hook 就已存在,因此执行开始前即可调用 resumeHook();提前到达的载荷会被缓冲并按顺序交付;使用相同令牌调用 createHook() 时,也会绑定到已认领的 hook,而不会增加步骤。 💬 Key Quotes Workflow SDK 的 start() 函数现在可以通过一个原子化步骤接纳一次运行并认领一个 hook。重复启动工作流会安全失败。 令牌就是幂等键,它来自你自己的业务领域:订单 ID、发票 ID、导入 ID 或请求 ID。仅凭令牌就能保证幂等性。 只有一次运行拥有该令牌;重复调用 start() 会抛出 HookConflictError,其中包含所有者的 conflictingRunId,并且绝不会成为一次运行。 📊 Article Meta AI Screening: 85 Source: Vercel News Author: Alex Langenfeld Category: 软件编程 Language: 英文 Read Time: 2 min Word Count: 415 Tags: 编程与工程 , 开发者工具 , 云原生 / DevOps , 个人效率 , OpenAI API Read Full Article

查看原文