POST /site/jobs/next。连接器领取任务后需要在 lease 过期前执行,并通过完成接口回传结果。
接口总览
| 能力 | 方法 | 路径 | 调用方 |
|---|---|---|---|
| 领取下一条任务 | POST | /site/jobs/next | 插件或客户站点 worker |
| 完成任务 | POST | /site/jobs/{id}/complete | 插件或客户站点 worker |
通用请求头
| Header | 必填 | 说明 |
|---|---|---|
Authorization: Bearer <site_token> | 是 | 站点服务端 token |
Content-Type: application/json | 写接口必填 | 请求体格式 |
Idempotency-Key | 建议 | 领取和完成任务重试时保持一致 |
POST /site/jobs/next
领取一条待执行任务。成功领取后,任务会变成running,并返回 claimToken 与 leaseUntil。
请求示例
成功响应
Job 字段
| 字段 | 说明 |
|---|---|
id | 任务 ID |
type | 任务类型,例如 sync_content、publish_article、apply_seo_overlay |
status | 当前任务状态 |
payload | 任务载荷,结构随任务类型变化 |
attempts | 当前尝试次数 |
maxAttempts | 最大尝试次数 |
claimToken | 本次领取凭证,完成任务时必须带回 |
leaseUntil | 租约过期时间 |
POST /site/jobs//complete
回传任务执行结果。完成接口必须携带领取任务时返回的claimToken。
Path 参数
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
id | string | 是 | 任务 ID |
Body 参数
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
ok | boolean | 是 | 任务是否执行成功 |
claimToken | string | 是 | 领取任务时返回的 claimToken |
result.externalId | string | 成功时建议 | 客户站点侧内容 ID |
result.url | string | 成功时建议 | 客户站点侧访问 URL |
result.path | string | 成功时建议 | 客户站点侧路径 |
result.status | string | 否 | 客户站点侧状态 |
result.message | string | 否 | 说明信息 |
result.data | object | 否 | 扩展结果 |
error | string | 失败时建议 | 错误原因 |
成功示例
失败示例
完成响应
Lease 机制
| 字段 | 说明 |
|---|---|
claimToken | 任务领取凭证,完成任务时必须带回 |
leaseUntil | 当前领取租约过期时间 |
attempts | 本任务已尝试次数 |
maxAttempts | 本任务最大可尝试次数 |
claimToken 不匹配时强行回传成功。
常见错误
| HTTP | 错误码 | 说明 | 处理建议 |
|---|---|---|---|
400 | INVALID_REQUEST | 缺少 claimToken 或请求体格式错误 | 修正请求体 |
401 | INVALID_TOKEN | token 无效 | 检查站点 token |
404 | NOT_FOUND | 任务不存在 | 停止处理该任务 |
409 | RESOURCE_CONFLICT | 租约不匹配、任务已完成或幂等冲突 | 重新领取任务或复用正确幂等键 |
429 | RATE_LIMITED | 请求过快 | 按 Retry-After 退避重试 |
实现要点
- worker 应按固定间隔轮询
POST /site/jobs/next。 - 任务执行失败也要调用完成接口,并返回
ok: false。 - 发布、删除、回滚等站点侧操作也应做幂等处理。
- 网络超时后重试完成任务时,要复用同一个
Idempotency-Key和claimToken。