自托管 work item、heartbeat 和队列统计的数据结构。
Work API 用于连接 self_hosted Environment 的外部 worker。worker 通过 poll 获取 Session work,ack 确认执行,heartbeat 维持租约,并在完成或需要中止时 stop。
Work item 对象
list、poll、get、update metadata、ack 和 stop 接口都会返回该对象。
|
字段 |
类型 |
说明 |
|
|
string |
Work item ID,前缀为 work_ |
|
|
string |
固定为 "work" |
|
|
string |
Environment ID,前缀为 env_ |
|
|
object |
Work payload 描述 |
|
|
string |
当前固定为 "session" |
|
|
string |
Session ID,前缀为 sess_ |
|
|
string |
Work item 状态,见 Work 状态 |
|
|
string |
创建时间,UTC |
|
|
string|null |
worker ack 的时间;未 ack 时为 null |
|
|
string|null |
第一次 heartbeat 将 item 推进到 active 的时间;未开始时为 null |
|
|
string|null |
最近一次 heartbeat 时间;首次 heartbeat 前为 null |
|
|
string|null |
graceful stop 请求时间;未请求时为 null |
|
|
string|null |
到达 stopped 的时间;仍 live 时为 null |
|
|
object |
与 work item 关联的仅字符串 metadata |
Work 状态
|
状态 |
说明 |
|
|
work item 可被 poll;或已投递但尚未 ack |
|
|
worker 已 ack,应开始执行 |
|
|
worker 已发送 heartbeat,并持有当前 lease |
|
|
已请求 graceful stop;worker 应 drain 并确认 stop |
|
|
item 已不再 live,不能再 heartbeat |
Work metadata
Work metadata 是仅字符串 map。Session 创建 work item 时,Session metadata 会被投影到该字符串 map。使用更新 work item metadata 合并修改:
-
字符串值表示 upsert key。
-
null 表示删除 key。
-
省略 metadata 会保留当前 metadata 不变。
Work heartbeat 对象
发送 work heartbeat 返回该对象。
|
字段 |
类型 |
说明 |
|
|
string |
固定为 "work_heartbeat" |
|
|
string |
服务端接受 heartbeat 的时间戳 |
|
|
boolean |
成功 heartbeat 时固定为 true |
|
|
string |
heartbeat 后的当前 work item 状态 |
|
|
integer |
当前 lease TTL,单位秒 |
Work queue stats 对象
获取 work 队列统计返回该对象。
|
字段 |
类型 |
说明 |
|
|
string |
固定为 "work_queue_stats" |
|
|
integer |
当前可被 worker claim 的 queued item 数 |
|
|
integer |
最近已投递但尚未 ack 的 queued item 数 |
|
|
string|null |
最早 queued item 的创建时间;队列为空时为 null |
|
|
integer |
最近 30 秒内携带 Worker-ID 轮询过该 Environment 的不同 worker 数 |