用途:该技能面向使用 Inngest 构建持久化(durable)函数的开发者,帮助实现能承受进程崩溃、失败自动重试、按计划运行、响应事件并跨步骤保持状态的长时工作流。内容以 TypeScript 为主,Python 或 Go 需参考 Inngest 官方文档,核心概念跨语言通用。
主要能力:讲解持久化执行模型,强调把副作用与非确定性代码放入 step.run(),通过记忆化避免已完成步骤重复执行,状态持久化可跨基础设施故障,并支持可配置的自动重试。覆盖函数创建(createFunction 的 id、triggers、retries、concurrency)、事件与 cron 触发器(含时区与条件过滤、最多 10 个触发器)、step.invoke 调用其他函数、事件级与函数级幂等、基于事件或超时的取消及清理、NonRetriableError 与 RetryAfterError 等错误处理、日志与 checkpointing 性能优化。
使用方式:在 createFunction 中定义 id 与 triggers,在回调内用 step.run() 包裹 API 调用、数据库读写、文件 I/O 等非确定性操作;纯计算、简单校验和日志应放在步骤外。可用 step.invoke() 或 step.sendEvent() 拆分过大函数。
限制:每个函数运行最多 1000 步,每步返回数据最多 4MB,单次运行状态(事件数据、步骤输出、函数输出合计)最多 32MB;每步为独立 HTTP 请求,约 50-100ms 开销。默认每步 5 次尝试(1 次初始加 4 次重试),指数退避带抖动。v4 中 logLevel 选项已移除,改用 logger 选项配合 ConsoleLogger 或自定义 logger;checkpointing 在 v4 默认启用。避免在步骤外写非确定性代码、数据库调用或日志,部署后不要更改步骤 ID。