部署运行¶
当前 SDK 没有“发布”或“立即运行”方法。create_workflow()/CreateWorkflow() 创建定义并配置处理节奏;工作流何时产生作业由 ProcessMode 和数据载入决定。
处理节奏¶
ProcessMode 有两个整数字段:
字段 |
含义 |
|---|---|
|
处理间隔,单位为秒;SDK 将 |
|
处理偏移量,单位为秒 |
高层文档处理 helper 固定使用 interval = -1 和 offset = 0。低层创建示例可传正数间隔,例如 3600;具体调度行为仍应在目标实例验证,SDK 不提供独立的调度对象读取接口。
从文件载入到作业¶
文件载入触发的完整链路是:
创建工作流并保存返回的工作流 ID;
将文件写入配置的源 Volume,并保存返回的源文件 ID;
使用这两个 ID 查询作业;
等待状态变为完成或失败;
从目标 Volume 读取结果。
Python:
from moi import RawClient, SDKClient
from moi.models import WorkflowJobStatus
raw = RawClient("https://api.example.com", "your-api-key")
client = SDKClient(raw)
job = client.wait_for_workflow_job(
workflow_id,
source_file_id,
poll_interval=2.0,
timeout=120.0,
wait_for_statuses=[
WorkflowJobStatus.COMPLETED,
WorkflowJobStatus.FAILED,
],
)
print(job["job_id"], WorkflowJobStatus.to_string(job["status"]))
Go:
ctx, cancel := context.WithTimeout(context.Background(), 2*time.Minute)
defer cancel()
job, err := client.WaitForWorkflowJob(
ctx,
workflowID,
sourceFileID,
2*time.Second,
[]sdk.WorkflowJobStatus{
sdk.WorkflowJobStatusCompleted,
sdk.WorkflowJobStatusFailed,
},
)
if err != nil {
return err
}
fmt.Println(job.JobID, job.Status.String())
Python helper 的 timeout 默认 60 秒;Go helper 在传入的 context 没有 deadline 时也使用 60 秒默认超时。未传目标状态时,两者都会在作业一出现时返回,而不是等待完成。
避免重复处理¶
等待超时只表示客户端没有在期限内观察到目标状态,不代表平台没有创建作业。不要因此重复上传同一个文件。先用工作流 ID 和源文件 ID重新查询;写入源 Volume 时也应使用 SDK 提供的去重配置。