Skip to content

CrontabResult 总览

CrontabResult 是 Crontab 定时任务的执行结果记录,用于追踪每个定时任务的执行状态和结果

基本流程

当 Crontab 定时任务触发并执行完成后,执行结果会被记录到 CrontabResult 表中:

Crontab 触发 => 执行任务 => 记录执行结果 => 存储到数据库

调用者可以通过 JsonRpc API 查询和删除这些执行结果记录

方法列表

方法名描述
crontab-result_query查询执行结果记录
crontab-result_delete删除执行结果记录

数据结构

CrontabResult 结构如下:

json
{
  "id": 1, // 记录 ID
  "cron_id": 5, // 关联的 Crontab ID
  "cron_name": "cleanup_database", // Crontab 名称
  "run_time": 1769341269012, // 执行时间(毫秒时间戳)
  "relative_id": null, // 如果是下发 Agent Task 的 Cron,这里为 task_id;如果是触发 JsWorker 的 Cron,这里为 js_result_id
  "success": true, // 是否执行成功
  "message": "Cleaned 100 records" // 执行结果消息
}

查询条件

需要用到统一的结构体 CrontabResultQueryCondition

其为 Rust Enum,解析时请注意:

rust
#[serde(rename_all = "snake_case")]
pub enum CrontabResultQueryCondition {
    Id(i64),                      // 按记录 ID 过滤
    CronId(i64),                  // 按 cron_id 过滤
    CronName(String),             // 按 cron_name 过滤
    RunTimeFromTo(i64, i64),      // 按时间范围过滤(开始, 结束)
    RunTimeFrom(i64),             // 按起始时间过滤
    RunTimeTo(i64),               // 按结束时间过滤
    IsSuccess,                    // 仅查找成功的记录
    IsFailure,                    // 仅查找失败的记录
    Limit(u64),                   // 限制返回结果数量
    Last,                         // 获取最后一条记录
}

下面是一些解析的示例:

json
{
    "id": 1
}

{
    "cron_name": "cleanup_database"
}

{
    "run_time_from_to": [1700000000000, 1800000000000]
}

{
    "run_time_from": 1700000000000
}

{
    "is_success": null
}

{
    "limit": 100 // 依照 run_time 最新的 100 条
}

"last" // 对就是一个 `last`,无其他东西

注意事项

run_time_from_to 字段可看作是 run_time_fromrun_time_to 的简略写法,下面的两种表达方式是等价的:

json
{
    "run_time_from_to": [1700000000000, 1800000000000]
}

[
    {
        "run_time_from": 1700000000000
    },
    {
        "run_time_to": 1800000000000
    }
]

limit 为 1 与 last 等价,在数据库层面限制查询结果,按照时间倒序排列

多个条件并存时,为 AND,即只查询满足所有条件的数据

权限说明

CrontabResult 的查询和删除权限仅在 Global Scope 下有效

权限结构示例:

json
{
  "scopes": [
    "global"
  ],
  "permissions": [
    {
      "crontab_result": {
        "read": "cleanup_database" // 允许读取指定 cron_name 的结果记录
      }
    },
    {
      "crontab_result": {
        "read": "backup_*" // 支持通配符
      }
    },
    {
      "crontab_result": {
        "delete": "cleanup_database" // 允许删除指定 cron_name 的结果记录
      }
    }
  ]
}
  • read: 允许读取指定 cron_name 的结果记录,支持通配符 *
  • delete: 允许删除指定 cron_name 的结果记录,支持通配符 *

注意: AgentUuid Scope 下的 CrontabResult 权限无效