重试重跑¶
当前 Python 和 Go SDK 都没有整次重试、节点重跑、重跑计划或节点运行详情的方法。list_workflow_jobs()/ListWorkflowJobs() 只能返回作业 ID、工作流 ID、状态和起止时间,无法仅凭这些字段安全推导局部重跑范围。
SDK 能做的失败检测¶
等待作业进入完成或失败状态:
from moi.models import WorkflowJobStatus
job = client.wait_for_workflow_job(
workflow_id,
source_file_id,
wait_for_statuses=[
WorkflowJobStatus.COMPLETED,
WorkflowJobStatus.FAILED,
],
)
if job["status"] == WorkflowJobStatus.FAILED:
print("failed job:", job["job_id"])
该结果只足以触发告警或转人工排查。SDK 不返回失败节点、错误日志或中间产物,不能据此自动选择重跑节点。
再次载入不是重试 API¶
再次上传源文件可能触发一条新作业,但它不会与原作业建立“重试”关系,也不保证目标写入幂等。在这么做之前必须确认:
失败原因已经在 UI 或目标实例的作业详情中修复;
旧作业是否已经写入部分结果;
目标 Volume 或外部系统能否安全接受重复写入;
文件去重策略是否会跳过再次上传。
需要正式的整次重试或节点分支重跑时,使用目标 MOI 实例明确发布的 Product API 或 UI。不要通过 RawClient 的内部通用 HTTP 方法猜测路径或请求体。
应用侧恢复记录¶
若业务决定以新文件载入替代原作业,至少记录原 job ID、新文件 ID、新 job ID、失败原因和处理人。完成后核对目标产物,不要只看新作业状态。