Skip to content

定时调度 API ​

状态:Current(cron 定时任务调度:五字段表达式、失败计数与死信) handler:internal/api/schedule/handler.go

路径前缀 /api/v1/schedules(登录态;运维权限)。

端点清单 ​

方法路径说明
GET/api/v1/schedules分页列表(page/pageSize/gameId/env/status)
POST/api/v1/schedules创建
GET/api/v1/schedules/:id/runs执行记录
PUT/api/v1/schedules/:id/status启停(active / paused)
POST/api/v1/schedules/:id/trigger立即触发一次
DELETE/api/v1/schedules/:id删除

响应契约(裸 payload,无 envelope;字段 lowerCamelCase) ​

创建 ​

POST body:

json
{
  "name": "每日凌晨清理",
  "cronExpr": "0 3 * * *",
  "functionId": "maintenance.cleanup",
  "gameId": "demo",
  "env": "production",
  "payload": { "days": 7 },
  "maxFailedRuns": 3
}

响应 { "item": { ...ScheduleItem } };cron 表达式非法返回 400 { "error": "...", "message": "invalid cron expression" }。

执行记录 ​

GET /:id/runs → { "items": [ { "id": 1, "taskRunId": "tr-...", "status": "success|failed|dead", "message": "", "slot": "2026-08-31T03:00", "createdAt": "..." } ], "total": 10 }

语义 ​

  • 五字段 cron(分 时 日 月 周),时区为 server 本地时区
  • 失败计数与死信:连续失败达 maxFailedRuns 后调度进入 dead 状态不再执行(需人工介入重新激活)
  • 手动触发不重置失败计数,也不占用 cron 槽位
  • 管理页:运维中心「定时调度」(/ops/schedules)

已知边界 ​

  • 调度器随 server 启动运行(多实例 HA 下由 cluster owner 单点执行)
  • 备份等平台自身定时任务建议托管于此(见 备份恢复)