mcpField
C
cron-jobs

cron-jobs

github.com/rivet-dev开发441.2k 次安装1 天前更新
代码仓库

关于 cron-jobs

cron-jobs 是介绍 RivetKit 持久化 Actor 本地调度与周期任务的技能,说明调度类型、取消与更新、故障处理,并提供全局或按实体安排任务的示例。

主要功能

  1. 01一次性延迟与定时调度
  2. 02日历和间隔 Cron 任务
  3. 03持久化 Actor 本地计时器
  4. 04调度取消与更新
  5. 05故障与幂等性指南
  6. 06调度示例

适用场景

  1. 01安排一次性 Actor 操作
  2. 02运行周期性后台任务
  3. 03创建按用户区分的提醒
  4. 04管理全局定时任务

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/rivet-dev/skills --skill cron-jobs

安装后在 Claude Code 中输入/cron-jobs确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

BASE_SKILL.md
index.json
openapi.json
reference/actors/
access-control.md
actions.md
actor-runtime-socket.md
appearance.md
authentication.md
communicating-between-actors.md
connections.md
debugging.md
design-patterns.md
destroy.md
errors.md
events.md
fetch-and-websocket-handler.md
helper-types.md
http-api.md
input.md
inspector-tabs.md
keys.md
kv.md
lifecycle.md
limits.md
metadata.md
queues.md
reference/actors/quickstart/
backend.md
cloudflare.md
effect.md
next-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
命令行工具
客户端
教程集
部署
通用
自托管

评论

支持 Markdown