SuperAPI AI 工具集

inngest-steps

通用与其它

查看项目

更新于 10-16 00:00

技能介绍

用途:用 Inngest 的 step 方法构建持久、可重试、可观测的工作流,适合需要跨进程重启存活的延迟(如 24 小时购物车挽回、定时跟进)、等待人工审批或外部事件等场景。资料主要面向 TypeScript,Python 与 Go 需参考 Inngest 官方文档,核心概念通用。

核心概念:每个 step 是独立 HTTP 请求,可单独重试与监控;函数每次执行都会从头重跑,因此所有非确定性代码(API 调用、数据库查询、随机数)必须放进 step 内,不能放在外面。每个函数最多 1000 个 step,step 数据上限 4MB,单次函数运行总计 32MB。

主要能力:step.run() 执行可重试代码并返回数据,循环中可复用 step ID(计数器自动处理);step.sleep() 按 "24h"、"30s"、"7d" 等时长暂停且不占计算资源;step.sleepUntil() 等到指定时间;step.waitForEvent() 等待事件,必须设置 timeout 并处理 null 返回,且只能捕获该 step 执行之后发送的事件,支持 match 与 CEL 表达式(event 为原始触发事件,async 为待匹配的新事件);step.waitForSignal() 用于 1:1 唯一信号匹配,需指定 onConflict 为 replace 或 fail;step.sendEvent() 扇出触发其他函数而不等待结果;step.invoke() 调用其他函数并获取结果,v4 起不再支持字符串函数 ID,需用导入的函数引用或 referenceFunction() 做跨应用调用。

使用方式:用 Promise.all 并行执行 step(v4 默认优化并行);Promise.race() 会等所有 promise 结束,需真正竞速时用 group.parallel();可通过 optimizeParallelism: false 在客户端或函数级关闭优化。分块批处理时按块生成 step 再汇总结果。

限制与注意:函数重执行导致 step 外代码每次都会运行;生产环境 waitForEvent 必须设超时;step 输出与函数运行有大小上限;服务端无服务器平台需在客户端配置 maxRuntime。并发与限流参见 inngest-flow-control。常见场景包括人工介入、多步引导、数据处理、外部集成、AI 工作流与函数组合。