运行控制

当前 SDK 能查询工作流作业,但不能暂停、恢复或取消作业。本页中的“运行控制”因此限于有界等待和调用方停止轮询。

分页查询作业

Python RawClient.list_workflow_jobs() 接收以下可选过滤项:

  • workflow_id

  • source_file_id

  • status

  • page(从 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 对应类型是 WorkflowJobListRequestWorkflowJobListResponse

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)
}

响应包含 jobstotal。状态值为 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;不要把停止本地轮询误认为停止了平台作业。

失败后的处理边界见重试重跑