使用您的项目

定时任务(Cron)

按重复计划运行代码 — 轮询市场、刷新缓存、发布摘要。

最后更新:

什么是定时任务?

定时任务是您项目中的常规 HTTP 处理程序,FloopFloop 会按照 您配置的定期计划调用它——每 5 分钟、每小时、每天午夜, 随您配置。典型用途:轮询交易所的市场数据、刷新缓存、 发送每日摘要邮件、评估策略并下单。

每次触发都是对您项目中 /api/cron/* 路由的一个POST 请求,带有项目范围的持有者令牌,您在执行 任何工作前需要验证该令牌。

编写处理程序

您的处理程序是一个普通的 Next.js POST 路由。在执行任何工作前, 请对照 process.env.FLOOP_CRON_TOKEN 验证持有者令牌—— 任何其他请求都应收到 401:

// src/app/api/cron/rebalance/route.ts
import { NextRequest, NextResponse } from "next/server";

export const dynamic = "force-dynamic";

export async function POST(request: NextRequest) {
  const expected = `Bearer ${process.env.FLOOP_CRON_TOKEN ?? ""}`;
  if (request.headers.get("authorization") !== expected) {
    return NextResponse.json({ error: "Unauthorized" }, { status: 401 });
  }

  // Do your work here — query data, call APIs, etc.
  return NextResponse.json({ ok: true });
}

FLOOP_CRON_TOKEN 环境变量由 FloopFloop 管理——它在 构建时内置到您项目的运行时中,不会出现在 Secrets UI 中。

任务的注册方式

定时任务由模板声明,而不是手动添加。模板会在其根目录附带 一个 floop.crons.json 文件:

{
  "jobs": [
    {
      "name": "evaluate-strategy",
      "cron": "*/5 * * * *",
      "path": "/api/cron/evaluate-strategy",
      "enabled": true
    }
  ]
}

在您第一次成功部署后,FloopFloop 会读取此清单并为您的项目注册 任务。注册是幂等的——重新部署相同的模板不会重复任务或重置任何 运行历史。

如果您的应用需要不同的计划,请在聊天中请求 FloopFloop 更新模板的floop.crons.json;新的执行频率将在下次部署后生效。

运行状态

每次触发都会记录状态:okerrortimeout。 从您的处理程序返回非 2xx HTTP 状态以将运行标记为错误——响应正文 (最多 500 个字符)将作为错误消息被捕获,以便调试。

限制与约束

  • 每个项目最多 10 个定时任务。floop.crons.json中声明超过 10 个条目的模板,超出部分将在注册时被拒绝。
  • 最小间隔 1 分钟。 亚分钟级别的 cron 表达式 将在注册时被拒绝。
  • 每次触发 30 秒的请求超时。 如果您的处理程序 花费时间更长,调度器会记录 timeout 并继续。
  • 仅在您的项目已部署且处于活跃状态时触发——新创建的项目和 已暂停的项目会被静默跳过,并在重新激活后自动恢复。
  • 路径必须匹配 /api/cron/<name>—— 此限制将 cron 触发与您的公开路由隔离开来。