Run.startAsync()
.startAsync() 方法会启动 workflow run,但不等待其完成。它会立即返回 runId,让 workflow 在后台执行。这适用于长时间运行的 workflow 或计划任务,也能避免因等待 workflow 完成而阻塞。
使用示例使用示例的直接链接
const run = await workflow.createRun()
// Fire-and-forget - returns immediately
const { runId } = await run.startAsync({
inputData: {
value: 'initial data',
},
})
// Optionally poll for completion later
const result = await workflow.getWorkflowRunExecutionResult(runId)
参数参数的直接链接
inputData?:
z.infer<TInput>
与 workflow 输入 schema 匹配的输入数据
requestContext?:
RequestContext
workflow 执行期间使用的 Request Context 数据
initialState?:
z.infer<TState>
workflow 执行使用的初始状态
tracingOptions?:
TracingOptions
Tracing 配置选项。
metadata?:
Record<string, any>
要添加到根 trace span 的 metadata。可用于添加用户 ID、会话 ID 或 feature flag 等自定义属性。
traceId?:
string
此次执行使用的 trace ID(1-32 个十六进制字符)。提供后,此 trace 将归入指定的 trace。
outputOptions?:
OutputOptions
输出配置选项。
includeState?:
boolean
是否在结果中包含 workflow run 状态。
返回值返回值的直接链接
runId:
string
此 workflow run 的唯一标识符。可用它稍后检查状态或获取结果。
何时使用 startAsync()when-to-use-startasync的直接链接
在以下情况中,请使用 startAsync() 而不是 start():
- 长时间运行的 workflow:workflow 可能需要数分钟或数小时才能完成
- 计划任务/cron 触发器:希望触发 workflow,而不阻塞调度器
- 避免轮询失败:对于 Inngest workflow,
start()会轮询完成状态,这可能失败并引发重试。startAsync()可避免此问题 - 后台处理:希望将工作加入队列并异步处理结果
检查 workflow 状态检查 workflow 状态的直接链接
调用 startAsync() 后,可以通过以下方式检查 workflow 状态:
// Get the execution result (including step outputs)
const result = await workflow.getWorkflowRunExecutionResult(runId)
if (result?.status === 'success') {
console.log('Workflow completed:', result.steps)
} else if (result?.status === 'failed') {
console.log('Workflow failed:', result.error)
} else if (result?.status === 'running') {
console.log('Workflow still running...')
}
相关内容相关内容的直接链接
- Run.start():启动 workflow 并等待其完成
- Workflows 概览
- Workflow.createRun()