Cron And Intervals

作者 val-town2d3ec654b6a7无许可证收录于 2026年10月8日更新于 2026年10月8日

Use when building a val that runs on a schedule — periodic jobs, recurring tasks, polling, cron jobs, monitoring, alerting. Covers the interval handler signature, cron expressions, the UTC timezone constraint, and the `lastRunAt` pattern for detecting new items since the previous run.

AI 生成的概览

指导编写按 cron 计划运行的 interval val,涵盖 UTC 时区规则与 lastRunAt 模式。

功能
该技能提供编写 interval 类型 val 的说明,使其按 cron 表达式周期性运行。内容涵盖 interval 处理函数签名、cron 表达式必须使用 UTC 时区的限制,以及用 lastRunAt 模式只获取上次运行以来新增条目的做法。还涉及读取和更新 interval 设置、何时无需模板,以及通过手动运行处理函数来验证改动。
适用场景
适用于创建或修改用于周期任务、轮询、监控或告警的计划型 val。适合应按时间触发而非由请求触发的工作。
运行要求
不附带脚本,仅为说明文档。假定使用支持 interval 类型文件的 val 平台,并具备 read_interval_settings、write_interval_settings 工具以及用于手动验证的 run_file 工具。

Cron / Interval Vals

Interval vals (fileType: "interval") run on a recurring schedule defined by a cron expression. Use them for polling external APIs, sending reminders, running cleanups, generating reports, or any work that should happen on a clock rather than in response to a request.

Basic handler

ts
// Learn more: https://docs.val.town/vals/cron/export default async function (interval: Interval) {  // interval.lastRunAt: Date | undefined  console.log(interval);}

The file must have an export — export default for the handler.

Timezone

Cron expressions run in UTC. Convert any human-readable schedule (e.g. "9am Eastern") to UTC before writing the cron expression. Daylight savings is not handled — pick a UTC time that's close enough year-round.

The lastRunAt pattern

interval.lastRunAt is the timestamp of the previous successful run (or undefined on the first run). Use it to fetch only items created since the last run, instead of re-scanning everything:

ts
export default async function (interval: Interval) {  const since = interval.lastRunAt ?? new Date(Date.now() - 24 * 60 * 60 * 1000);  const newItems = await fetchItemsSince(since);  for (const item of newItems) {    await handle(item);  }}

This makes the val idempotent against missed runs and avoids reprocessing.

Reading and updating the schedule

  • read_interval_settings — fetch the current cron expression and active state of an interval file.
  • write_interval_settings — change the cron expression or pause/resume an interval.

When to skip a template

For simple scheduled jobs, create a new val with a single interval-type file directly — no template needed. Templates are for more complex shapes (dashboards, AI agents, webhook + UI combos).

Verifying changes

After editing an interval val, use run_file to invoke the handler manually instead of waiting for the next scheduled run.

来源与署名

来源:val-town/plugins位于plugin/skills/cron-and-intervals提交2d3ec65

许可证: 无许可证

内容归原作者所有。SourceWeft 从公开仓库中收录这些内容。

举报或申请下架