本服务是 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/tasks | body = 一个任务对象;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/config | PUT 的 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
}
}
# 增(幂等:同一个 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>"
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。POST /api/run/<id> 试跑,别只看创建成功。
成本:本服务刻意做到日常 0 次 KV 写入(执行成功不落盘,执行时间由配置反推);
仅改配置、手动试跑、任务失败时才写。免费层 KV 写入仅 1000 次/天且全账户共享,所以这条是硬约束。
完整改造文档见工程目录 E:\cf-wrangler\cf-cron-hub\AI-GUIDE.md。