该技能围绕 Inngest 的持久执行模型,帮助构建容错、长时间运行的工作流,覆盖从触发器到错误处理的完整生命周期。内容以 TypeScript 为主,Python 或 Go 需参考 Inngest 官方文档;核心概念跨语言通用。
用途与主要能力:讲解持久执行模型(每个步骤封装副作用与非确定性代码,记忆化避免已完成步骤重复执行,状态持久化可抵御基础设施故障,自动重试且重试次数可配置);函数创建(inngest.createFunction,参数含 id、retries、concurrency、触发器);触发器(事件触发、条件过滤、最多 10 个多触发器、cron 及带时区 cron、invoke 调用其他函数);幂等性(事件级 id 去重、函数级 idempotency 键及组合键);取消(cancelOn 事件匹配、timeouts 的 start/finish、通过 inngest/function.cancelled 做清理);错误与重试(默认每步 5 次尝试、指数退避加抖动、retries 配置、NonRetriableError、RetryAfterError);日志(避免在步骤外记录以免重复);性能优化(checkpointing 配置 maxRuntime、bufferedSteps、maxInterval);以及条件步骤、错误恢复等模式。
必要用法要点:所有 API 调用、数据库读写、文件 I/O 及任何非确定性操作应放入 step.run();纯计算、简单校验等确定性无副作用逻辑不要包裹;步骤外不要记录日志。函数硬限制:每次运行最多 1,000 步、每步返回数据最大 4MB、整体运行状态(含事件数据、步骤输出、函数输出)最大 32MB;每步为独立 HTTP 请求,约 50-100ms 开销;达到限制时可拆分为更小函数并用 step.invoke() 或 step.sendEvent() 连接。
适用场景:需要长时运行、可恢复、可重试的服务端工作流,如订单处理、用户动作处理、定时报表、实时处理等。
限制:技能聚焦 TypeScript,其他语言需查官方文档;具体收费、价格、平台支持与效果资料未提供。常见错误包括在步骤外编写非确定性代码或数据库调用、步骤外日志导致重复、部署后更改 step id、未处理 NonRetriableError、关键函数忽略幂等性。事件发送与 webhook 处理另见 inngest-events 技能,步骤方法参考 inngest-steps 及 references 中的 step-execution、error-handling、observability、checkpointing 文档。