定时任务Cron Jobs
一句话
定时任务是按设定的时间或周期自动执行的任务,比如每天早上发日报、每小时同步一次数据。
大白话
定时任务像手机闹钟:设好“每天早上 8 点”,到点它就自己响,不用你每天记着去按,设一次就一直生效。
比喻的边界
闹钟很少漏响,定时任务却可能因为网络或平台原因漏跑或重复跑;而且很多平台按 UTC 计时,和北京时间差 8 小时。
拿去就能用
我想让按自动运行,时区是 Asia/Shanghai。帮我写出定时配置,说明平台按哪个时区计算、表达式每一位的含义,再告诉我怎么手动触发一次验证。
还差:要执行的任务、执行时间,发给 AI 前记得换掉
我设置了每天早上 8 点发提醒,实际却总在下午 4 点收到。我怀疑平台按 UTC 计算时间,先帮我验证这个猜测,确认后再改表达式,并告诉我怎么确认下次执行时间。
我的定时任务每小时同步一次数据,担心偶尔漏跑或重复跑。帮我检查它重复执行会不会产生重复数据;如果会,提出一个最简单的防重办法,先说明再改。
别这样说 → 这样说
别这样说
帮我弄个定时任务每天跑一下。
这样说
我想每天早上 8 点(Asia/Shanghai 时区)给自己发一封昨日订单汇总邮件,项目部署在 Vercel。帮我写好定时任务配置和对应接口,说明时间怎么换算成 UTC,再告诉我怎么手动触发一次测试。
差别:写清了执行时间、时区、平台和测试方法。
误解定时任务设好了,就一定准点、只跑一次。
其实是很多平台只是尽力按时触发,可能漏跑,也可能重复跑,上一次没跑完下一次又开始了;任务要能安全地重复执行,并留下执行记录。
展开专业理解
Cron 表达式用五个字段表示分、时、日、月、星期,例如 0 0 * * * 在 UTC 零点执行,也就是北京时间早上 8 点。以 Vercel 为例,定时任务固定按 UTC 计算,触发是尽力而为,偶尔会漏发或重复;运行时间超过间隔时,可能两个实例同时在跑。所以任务要设计成可重复执行,并加上防并发和执行记录。以 Vercel 免费版为例,每天只能跑一次,而且只保证在设定的那个小时内触发;需要准点或更频繁,要换付费套餐或别的调度服务(查证 2026-09-26)。
来源
- Vercel 文档:Cron Jobs 核对于 2026-09-26
- Vercel 文档:管理 Cron Jobs 核对于 2026-09-26
- Vercel 文档:Cron Jobs 用量与计费 核对于 2026-09-26