关于 cron-jobs
cron-jobs 是介绍 RivetKit 持久化 Actor 本地调度与周期任务的技能,说明调度类型、取消与更新、故障处理,并提供全局或按实体安排任务的示例。
主要功能
- 01一次性延迟与定时调度
- 02日历和间隔 Cron 任务
- 03持久化 Actor 本地计时器
- 04调度取消与更新
- 05故障与幂等性指南
- 06调度示例
适用场景
- 01安排一次性 Actor 操作
- 02运行周期性后台任务
- 03创建按用户区分的提醒
- 04管理全局定时任务
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ rivet-dev/ skills --skill cron-jobs安装后在 Claude Code 中输入/cron-jobs确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
BASE_SKILL.mdindex.jsonopenapi.jsonreference/actors/access-control.mdactions.mdactor-runtime-socket.mdappearance.mdauthentication.mdcommunicating-between-actors.mdconnections.mddebugging.mddesign-patterns.mddestroy.mderrors.mdevents.mdfetch-and-websocket-handler.mdhelper-types.mdhttp-api.mdinput.mdinspector-tabs.mdkeys.mdkv.mdlifecycle.mdlimits.mdmetadata.mdqueues.mdreference/actors/quickstart/backend.mdcloudflare.mdeffect.mdnext-js.md详细介绍
Cron 作业和定时任务
重要:开始任何操作前,必须先阅读此技能目录中的 BASE_SKILL.md。其中包含有关调试、错误处理、状态管理、部署和项目设置的重要指导。这些规则和模式适用于所有 RivetKit 工作。以下内容均假定你已阅读并理解该文件。
工作示例
如需参考实现,请阅读以下模板中的原始可运行示例代码:
Rivet Actor 定时任务是持久化的 Actor 本地计时器。即使 Actor 休眠、重启、升级、部署或崩溃,它们也能继续运行,无需单独的 cron 服务。
选择定时任务类型
| API | 适用场景 |
|---|---|
c.schedule.after(delayMs, action, ...args) | 在相对延迟后执行一次性任务。 |
c.schedule.at(timestamp, action, ...args) | 在精确的 Unix 毫秒时间戳执行一次性任务。 |
c.cron.set({ ... }) | 在 IANA 时区中按日历规则重复执行的命名任务。 |
c.cron.every({ ... }) | 间隔至少为 5 秒的命名固定间隔任务。 |
所有回调都是同一 Actor 上的普通操作。请在代码中固定操作名称,不要接受客户端传入的任意操作名称。
完整 API、历史记录、取消方式、失败行为和限制,请参阅定时调度与 Cron。
日历任务
使用 cron.set,而不是手动重新安排一次性操作:
在 onCreate 中安装固定的后台任务,确保每个 Actor 只执行一次设置。任务名称会作为 upsert 键,因此之后调用 cron.set 会更新现有任务,而不会创建重复任务。cron.set 也会处理时区和夏令时切换。
固定间隔任务
对于频繁执行的工作(例如在线状态检查或缓存刷新),请使用 cron.every:
await c.cron.every({
name: "presence-sweep",
interval: 15_000, // Minimum 5 seconds.
action: "sweepPresence",
maxHistory: 25,
});
间隔会以计划截止时间为基准,不会因操作的运行时长而漂移。如果上一次运行仍在进行,则会跳过重叠的执行时机。
取消和更新
如果一次性定时任务可能需要取消,请保留其返回的 ID:
const id = await c.schedule.after(60_000, "expireSession", sessionId);
await c.schedule.cancel(id);
重复任务按名称管理:
await c.cron.delete("presence-sweep");
再次调用 cron.set 或 cron.every 并使用相同名称时,会替换该任务的配置。
失败和幂等性
如果重复执行会造成危害,请确保定时操作具有幂等性。有关重试行为和工作流指导,请参阅执行行为。
拓扑结构
对于单个全局任务,请使用单例 Actor 键,例如 jobs["daily-report"]。对于相互隔离的提醒、试用期、计费周期或其他按实体划分的定时任务,请为每个用户或资源使用一个 Actor。
参考索引
Actors
- 访问控制
- 操作
- Actor 密钥
- Actor 运行时套接字
- Actor 状态
- 身份验证
- Cloudflare Workers 快速入门
- Actor 之间的通信
- 连接
- 自定义检查器选项卡
- 调试
- 设计模式
- 销毁 Actor
- Effect.ts 快速入门(Beta)
- 错误
- Fetch 和 WebSocket 处理器
- 辅助类型
- 图标与名称
- 内存中状态
- 输入参数
- 生命周期
- 限制
- 底层 HTTP 请求处理器
- 底层 KV 存储
- 底层 WebSocket 处理器
- 元数据
- Next.js 快速入门
- Node.js 与 Bun 快速入门
- 队列与运行循环
- React 快速入门
- 实时功能
- Rust 快速入门(Beta)
- 扩展与并发
- 计划任务与 Cron
- 共享与加入状态
- SQLite
- SQLite + Drizzle
- Supabase Functions 快速入门
- 测试
- 故障排除
- 类型
- 原生 HTTP API
- 版本与升级
- 工作流
命令行工具
客户端
教程集
部署
- 容器运行器
- 部署到 Amazon Web Services Lambda
- 部署到 AWS ECS
- 部署到 Cloudflare Workers
- 部署到 Freestyle
- 部署到 Google Cloud Run
- 部署到 Hetzner
- 部署到 Kubernetes
- 部署到 Railway
- 部署到 Rivet Compute
- 部署到 Supabase Functions
- 部署到 Vercel
- 部署到虚拟机和裸金属服务器
通用
- Actor 配置
- 跨源资源共享
- 面向大模型和 AI 的文档
- 边缘网络
- 端点
- 环境变量
- HTTP 服务端
- 日志记录
- 池配置
- 生产环境检查清单
- Registry 配置
- 运行时模式
- WASM 与原生 SDK