任务生命周期
Scheduler 维护一个内存延迟队列。任务使用 id、future 或 delay、payload 以及字符串数组 labels 入队。工作者通过 lease 预留任务,并通过删除任务来确认完成。
入队
1curl -X POST "https://api.hola.cloud/schedulers/sched-a1b2c3d4-e5f6-7890-abcd-ef1234567890/tasks" \
2 -H "X-API-Key: YOUR_API_KEY" \
3 -H "Content-Type: application/json" \
4 -d '{
5 "id": "task-001",
6 "payload": { "action": "generate_report" },
7 "delay": "1h",
8 "labels": ["team:analytics", "env:production"]
9 }'
响应:HTTP 202 Accepted,响应体为空。
列表
1{
2 "scheduled": [
3 {
4 "id": "task-001",
5 "future": "2025-06-22T00:00:00Z",
6 "labels": ["team:analytics"]
7 }
8 ],
9 "inflight": [],
10 "scheduled_meta": { "page": 1, "per_page": 25, "total": 1, "total_pages": 1 },
11 "inflight_meta": { "page": 1, "per_page": 25, "total": 0, "total_pages": 0 }
12}
预留
1{ "worktime": "60s" }
1{
2 "id": "task-001",
3 "payload": { "action": "generate_report" },
4 "lease_expires_at": "2025-06-21T12:01:00Z",
5 "labels": ["team:analytics"]
6}
没有可用任务时,API 返回 204 No Content。
延长 Lease
1{ "extension": "30s" }
1{ "lease_expires_at": "2025-06-21T12:01:30Z" }
确认
工作者通过删除任务确认完成:
1curl -X DELETE "https://api.hola.cloud/schedulers/sched-a1b2c3d4-e5f6-7890-abcd-ef1234567890/tasks/task-001" \
2 -H "X-API-Key: YOUR_API_KEY"
响应:HTTP 204 No Content。
重新调度
1{ "delay": "5m" }
1{
2 "id": "task-001",
3 "future": "2025-06-21T12:06:00Z"
4}
SSE
SSE stream 只发送 snapshot 事件,包含 scheduled、inflight、分页 meta 和 health。
评论