Skip to content
返回云服务

Cloudflare Cron 触发器

通过 cron 表达式定时 Workers — 在边缘运行清理、同步和周期任务。

Cloudflare入门

为什么

Cron 触发器按计划运行 Workers 无需服务器 — 免费、无 EventBridge 成本,在数据附近的边缘执行。每 Worker 最多 5 个 cron 表达式。

Cloudflare 网络覆盖 125+ 国家的 330+ 城市,服务 20% 的互联网流量。Workers 冷启动为 0ms(基于 isolate),免费套餐覆盖每天 10 万请求。

何时使用

用于夜间 DB 备份、每小时缓存预热、日报生成和 token 刷新。避免 >30s CPU(Workers 限制)或需复杂编排的任务。

如何做

1. 加到 wrangler.toml — [triggers] crons = ["0 * * * *", "0 2 * * *"] 2. 实现 — export default { async scheduled(event, env, ctx) {...} } 3. 测试 — wrangler dev --test-scheduled 触发 handler 4. 部署 — wrangler deploy,计划立即生效 5. 观察 — 面板 → Triggers → Cron Events 显示调用 + 日志 6. 动态 — 用 Durable Object 闹钟实现运行时定义的计划

示例

// wrangler.toml [triggers] crons = ["0 2 * * *"] # 每天 UTC 2 点 // src/index.ts — 夜间把 D1 备份到 R2 export default { async scheduled(event: ScheduledEvent, env: Env, ctx: ExecutionContext) { ctx.waitUntil((async () => { const { results } = await env.DB.prepare("SELECT * FROM users").all(); await env.BACKUP.put(`users/${new Date().toISOString().slice(0,10)}.json`, JSON.stringify(results)); })()); }, async fetch(request: Request, env: Env) { return new Response("HTTP handler 与 cron 并存"); }, };

常见问题

  • ⚠Cron 仅 UTC — 无时区支持,把本地时间转 UTC 表达式
  • ⚠每 Worker 最多 5 个 cron — 需更多?拆分多个 Worker
  • ⚠失败无重试 — scheduled handler 出错须通过 Queues 自重试

最佳实践

  • ✓异步工作用 ctx.waitUntil — 确保 cron handler 不提前终止
  • ✓cron 任务幂等 — 同任务跑两次结果相同,重试/重复安全
  • ✓记录开始/结束 + 耗时 — 无显式日志时 cron 失败静默

常见问题解答

什么是Cloudflare Cron 触发器?它解决什么问题?

通过 cron 表达式定时 Workers — 在边缘运行清理、同步和周期任务。 它可帮助开发者在不自建基础设施的前提下完成部署、存储与扩展,是云服务选型的核心参考。

如何在 5 分钟内上手Cloudflare Cron 触发器?

两步即可跑通:① 加到 wrangler.toml — [triggers] crons = ["0 * * * *", "0 2 * * *"];② 实现 — export default { async scheduled(event, env, ctx) {...} }。建议先用免费套餐验证流程,再接入生产环境。

Cloudflare Cron 触发器 最容易踩的坑是什么?

最高频的问题是:Cron 仅 UTC — 无时区支持,把本地时间转 UTC 表达式。建议在上线前用 checklist 逐项核对,并在 CI 中加入策略与配置扫描。

Cloudflare Cron 触发器 的最佳实践有哪些?

Cloudflare Cron 触发器 的最佳实践包括:异步工作用 ctx.waitUntil — 确保 cron handler 不提前终止;cron 任务幂等 — 同任务跑两次结果相同,重试/重复安全;记录开始/结束 + 耗时 — 无显式日志时 cron 失败静默。其中首条「异步工作用 ctx.waitUntil — 确保 cron handler 不提前终止」应作为团队默认规范写入 IaC 模板。

Cloudflare Cron 触发器 如何控制成本与避免账单意外?

三招防超支:① 为所有资源打 env/team 标签并启用账单告警;② 用预算阈值触发 Slack/邮件通知;③ 定期用 Cost Explorer 审查闲置资源并清理。Cloudflare Cron 触发器 多数提供免费套餐,先在免费额度内验证再放量。