运行控制¶
当前 SDK 能查询工作流作业,但不能暂停、恢复或取消作业。本页中的“运行控制”因此限于有界等待和调用方停止轮询。
分页查询作业¶
Python RawClient.list_workflow_jobs() 接收以下可选过滤项:
workflow_idsource_file_idstatuspage(从 1 开始)page_size(默认 20)
response = raw.list_workflow_jobs({
"workflow_id": workflow_id,
"page": 1,
"page_size": 20,
})
for job in response["jobs"]:
print(job["job_id"], job["status"], job["start_time"], job["end_time"])
Go 对应类型是 WorkflowJobListRequest 和 WorkflowJobListResponse:
response, err := raw.ListWorkflowJobs(ctx, &sdk.WorkflowJobListRequest{
WorkflowID: workflowID,
Page: 1,
PageSize: 20,
})
if err != nil {
return err
}
for _, job := range response.Jobs {
fmt.Println(job.JobID, job.Status.String(), job.StartTime, job.EndTime)
}
响应包含 jobs 和 total。状态值为 0 未知、1 运行中、2 已完成、3 失败。若需要读取全部作业,根据 total 和页面大小继续翻页。
精确查询与等待¶
get_workflow_job()/GetWorkflowJob() 使用工作流 ID 和源文件 ID过滤,取第一页第一条结果;找不到时返回错误。它不接受 job ID,也不提供节点明细。
wait_for_workflow_job()/WaitForWorkflowJob() 循环调用上述 helper。应显式传入完成和失败两个目标状态,否则作业刚进入运行中就可能返回。
Go 版本的 context 可以停止本地等待。Python 版本没有取消回调;需要提前停止时,应把等待放在应用自己的任务边界内,或直接使用 RawClient 实现可中断轮询。
暂停、恢复与取消的边界¶
两个官方 SDK 当前都没有工作流作业的暂停、恢复或取消方法。权限枚举中出现 stop/run 权限不表示客户端已经实现了对应端点。需要控制服务端作业时,应使用目标实例明确提供的 UI 或 Product API;不要把停止本地轮询误认为停止了平台作业。
失败后的处理边界见重试重跑。