cf-cron-hub

🤖 AI / 脚本使用说明 · 怎么增删改任务(点此折叠/展开)

AI / 脚本使用说明 · 怎么增删改任务

本服务是 Cloudflare cron 调度中枢:只占用 1 个 cron 名额(免费账户全账户上限 5 个), 转而按配置驱动任意多个定时任务。全部操作走 REST API,认证只需一个请求头 x-admin-key不需要登录、不需要 Cookie

⚠️ 下面示例里的 <ADMIN_PASS> 是占位符,必须先替换成真实后台密码

本页公开可访问,出于安全不写明文密码。把示例中每一处 <ADMIN_PASS> 原样替换为后台密码(连尖括号一起换掉,最终形如 -H "x-admin-key: 你的密码")再执行。 密码值 = 部署时 wrangler.toml[vars] ADMIN_PASS 的值; 本机可直接 grep ADMIN_PASS E:/cf-wrangler/cf-cron-hub/wrangler.toml 取到。 密码忘了或想换:改 ADMIN_PASS 后重新 wrangler deploy 即可(旧密码立即失效)。

操作方法 · 路径说明
列出全部任务GET /api/tasks含推算出的上次 / 下次执行时间
· 新增任务POST /api/tasksbody = 一个任务对象;id 已存在则为整体覆盖更新
· 局部更新PATCH /api/tasks/<id>例如 {"enabled":false} 临时暂停
· 删除任务DELETE /api/tasks/<id>
立即试跑一次POST /api/run/<id>同步返回结果;加完任务务必跑一次
失败记录 / 清空GET /api/errors · POST /api/errors/clear
全量配置读写GET | PUT /api/configPUT 的 body 为 {"tasks":[...]}
字段自描述GET /api/schema机器可读:全部字段含义 + 端点清单

任务对象长什么样

{
  "id": "my-job",                    // 唯一标识,建议 kebab-case
  "name": "我的任务",                 // 显示名
  "note": "这条干嘛的",               // 备注,可空
  "enabled": true,                   // false = 暂停(保留配置)
  "schedule": {
    "type": "interval",              // interval 按秒数 | cron 按表达式
    "seconds": 900                   // 60 每分钟 / 300 每5分 / 900 每15分 / 3600 每小时 / 86400 每天
  },                                 // cron 模式改写成: "schedule":{"type":"cron","expr":"0 * * * *"}(UTC 时间)
  "action": {
    "type": "http",                  // http 发请求 | binding 走内部 Service Binding
    "method": "POST",
    "url": "https://目标域名/路径",
    "headers": { "Authorization": "Bearer 目标需要的密钥" },
    "body": null,
    "timeout_ms": 60000              // 上限 120000
  }
}

复制即用:增 / 删 / 改 (记得先把 <ADMIN_PASS> 换成真实密码)

# 增(幂等:同一个 id 再 POST 一次就是更新)
curl -X POST https://cron.panglina.cc.cd/api/tasks \
  -H "x-admin-key: <ADMIN_PASS>" -H "content-type: application/json" \
  -d '{"id":"my-job","name":"我的任务","enabled":true,"schedule":{"type":"interval","seconds":900},"action":{"type":"http","method":"GET","url":"https://example.panglina.ccwu.cc/health","timeout_ms":30000}}'

# 改(局部,例如暂停)
curl -X PATCH https://cron.panglina.cc.cd/api/tasks/my-job \
  -H "x-admin-key: <ADMIN_PASS>" -H "content-type: application/json" -d '{"enabled":false}'

# 删
curl -X DELETE https://cron.panglina.cc.cd/api/tasks/my-job -H "x-admin-key: <ADMIN_PASS>"

# 试跑验证(必做)
curl -X POST https://cron.panglina.cc.cd/api/run/my-job -H "x-admin-key: <ADMIN_PASS>"
★ 三条硬规则(都是踩过的坑)
  1. 目标 URL 必须跨 zone。本调度器服务在 cron.panglina.cc.cd,其 zone 是 panglina.cc.cd。 目标若同在这个 zone(如 xxx.panglina.cc.cd),Worker 子请求会被 Cloudflare 拦掉,返回 HTTP 403 + error code 1014。特征极隐蔽:本机 curl 同一个地址完全正常,只有 Worker 里调失败,很容易误判成密钥错。 解法:改用跨 zone 的同构域名 *.panglina.ccwu.cc*.panglina.ggff.net
  2. 目标别指向本服务自己的域名(cron.panglina.cc.cd)→ Worker 公网自请求必 522。
  3. 加完任务必须 POST /api/run/<id> 试跑,别只看创建成功。

成本:本服务刻意做到日常 0 次 KV 写入(执行成功不落盘,执行时间由配置反推); 仅改配置、手动试跑、任务失败时才写。免费层 KV 写入仅 1000 次/天且全账户共享,所以这条是硬约束。 完整改造文档见工程目录 E:\cf-wrangler\cf-cron-hub\AI-GUIDE.md