Menu

定时任务配置指南

定时任务是自动化运维的重要组成部分,可以帮助你定期执行数据同步、缓存更新、报表生成等重复性工作。

本指南将介绍如何在 Vercel 和 Dokploy 两个主流部署平台上配置定时任务,让你的网站实现自动化管理。

准备工作

在开始配置定时任务之前,请确保完成以下准备步骤:

  1. 生成 CRON_SECRET

CRON_SECRET 是一个安全密钥,用于验证定时任务请求的合法性,防止未授权访问。

生成方法(任选其一):

方法 A:使用在线工具

  1. 访问 https://generate-secret.vercel.app/32
  2. 复制生成的随机字符串

方法 B:使用命令行(Mac/Linux)

openssl rand -base64 32

生成后,请将该字符串添加到项目的环境变量 CRON_SECRET

  1. 完成定时任务接口编写

定时任务的工作原理是:系统定期向你的应用发送 HTTP 请求,触发预先编写好的接口,接口内部包含具体的任务处理逻辑。因此,在配置定时任务之前,你需要:

  • 在项目中创建定时任务接口(如: /api/cron/task1
  • 在接口中实现具体的业务逻辑
  • 添加 CRON_SECRET 验证,确保只有合法请求才能触发任务

Vercel 平台配置

提示

Vercel 免费账号仅支持创建一个定时任务。

Vercel 使用 Vercel Cron Jobs 功能来运行定时任务。配置步骤如下:

在项目根目录创建或编辑 vercel.json 文件:

vercel.json
{
  "crons": [
    {
      "path": "/api/cron/task1",
      "schedule": "0 0 * * *"
    },
    {
      "path": "/api/cron/task2",
      "schedule": "0 2 * * 1"
    }
  ]
}

Cron 表达式说明

  • 0 0 * * * - 每天凌晨 0:00(UTC 时间)
  • 0 2 * * 1 - 每周一凌晨 2:00(UTC 时间)

时区说明:Vercel Cron 使用 UTC 时间。

部署完成后,你可以在 Vercel 项目的 Settings > Cron Jobs 中可以看到已配置的定时任务。

Dokploy 平台配置

Dokploy 提供了更灵活的定时任务配置方式,支持直接在管理面板中创建和管理。

配置步骤:

  1. 进入需要创建定时任务的服务管理面板
  2. 找到 Schedules 选项卡
  3. 点击创建新的定时任务
dokploy schedules
dokploy schedules

表单内容填写如下:

  • Task Name: 自定义任务名称
  • Schedule: Cron 表达式,如:0 0 * * *(每天凌晨0点执行)
  • Shell Type: 选择 Sh
  • Command: wget --header="Authorization: Bearer <上一步生成的 CRON_SECRET>" --post-data="" -O- https://<你的域名>/api/<定时任务接口路径>

部署代码后,如果想测试定时任务,可以点击面板上的执行按钮,这样会立即执行一次。

dokploy schedules

Cron 表达式参考

┌───────────── 分钟 (0 - 59)
│ ┌───────────── 小时 (0 - 23)
│ │ ┌───────────── 日期 (1 - 31)
│ │ │ ┌───────────── 月份 (1 - 12)
│ │ │ │ ┌───────────── 星期 (0 - 6) (周日=0)
│ │ │ │ │
* * * * *

示例:

  • 0 2 * * * - 每天 2:00
  • 0 2 * * 1 - 每周一 2:00
  • 0 */6 * * * - 每 6 小时
  • 0 0 1 * * - 每月 1 号 0:00