用途:该技能讲解 Inngest 的持久执行模型,用于构建能经受进程崩溃、失败自动重试、按计划运行、响应事件并在步骤间保持状态的函数,主要面向 TypeScript(Python、Go 需查阅 Inngest 官方文档,核心概念通用)。
主要能力与概念:每个副作用或非确定性代码应封装进 step,避免在步骤外调用 Date.now() 等;已完成步骤通过记忆化不重复执行,状态可跨基础设施故障持久化。函数通过 inngest.createFunction 创建,在 triggers 数组中定义事件、条件过滤(if)、cron 及多触发器(最多 10 个)。可用 step.invoke 调用其他函数,step.run 包裹 API 调用、数据库读写、文件 I/O 等需要独立重试的操作。支持事件级与函数级幂等(idempotency、inngest.send 的 id)、基于事件的 cancelOn 与超时取消、NonRetriableError 与 RetryAfterError 自定义重试、logger 日志,以及 v4 默认开启的 checkpointing。
限制:每个函数运行最多 1,000 步、每步最多返回 4MB、整次运行状态合计最多 32MB,每步为独立 HTTP 请求(约 50-100ms 开销);超出需拆分函数。默认每步 5 次总尝试,指数退避加抖动。v4 移除了 logLevel 选项,需改用 logger 与 ConsoleLogger。其他收费、价格与平台细节暂未提供。
用法要点见技能内代码示例,此处不重复。