跳至主要内容
Deno 2 终于来了 🎉️
了解更多
A dinosaur with a clock around its neck.

Deno Cron 发布

构建 Web 应用越来越复杂。编写现代软件包括利用云基础设施、拆解样板代码和管理复杂的配置——而开发人员只想专注于编写业务逻辑。

Deno 旨在通过去除配置和不必要的样板代码来彻底简化 Web 开发。我们构建了 Deno KV,一个无服务器数据库,以及 Deno Queues,一种将任务卸载或安排未来工作的方法,直接集成到运行时中,因此将它们添加到您的应用程序只需要几行代码。

今天,我们很高兴地宣布在简化 Web 开发方面又迈进了一步:推出 Deno Cron,一种创建计划作业的简便方法

Deno.cron("Sample cron job", "*/10 * * * *", () => {
  console.log("This will run every 10 minutes");
});

在这篇文章中,我们将介绍

在上面的 YouTube 视频中学习一些关于 Deno.cron() 的提示和技巧。

使用 Deno Cron

Deno.cron()(从 1.38 版本开始,在 --unstable 标志下可用),是一个接受三个参数的函数

  • name,您的计划作业的名称
  • schedule,使用 Unix cron 格式,时间以 UTC 时区表示
  • handler,一个在提供的计划上执行的函数

与 UNIX/Linux 上的 cron 不同,Deno Cron 执行不会重叠。这意味着,如果您将某个任务计划为每 10 分钟运行一次,但该任务需要 30 分钟才能完成,Deno Cron 会自动跳过下一个计划运行,直到该任务完成。重叠的 cron 作业会导致意外问题,并且需要额外的繁琐逻辑来避免,但 Deno Cron 完全避开了这种情况。

我们还正在努力 支持用于指定 cron 计划的 JavaScript 友好 API

Deno Deploy 上的 Deno Cron

Deno Deploy 上,我们多租户分布式无服务器 JavaScript 平台,Deno.cron() 会自动检测和管理,因此您无需担心任何事。

您可以在没有 Web 服务器的情况下运行 cron 作业,甚至没有持续的传入请求来保持隔离状态。这是因为每当您的项目部署时,Deno Deploy 会自动检测您的 cron 作业并对其进行评估。当您的 handler 运行时,Deno Deploy 会自动按需启动一个隔离状态来运行它们。

这段代码在 Deno Deploy 上有效。 查看游乐场

我们还在 Deno Deploy 仪表板中添加了一个新的 Cron 选项卡,显示您项目中的所有活动 cron 作业

The new Cron tab in your project settings will show your scheduled jobs detected by Deno Deploy.

项目中显示活动 cron 作业的新 cron 选项卡。

Your cron jobs will also appear in your logs.

您的 cron 作业将出现在您的日志中。

要修改或停止现有 cron,请更改您的代码并创建一个新部署。例如,如果您从代码中删除了一个  Deno.cron 并将其部署,那么这些作业将不再被计划运行。

您的 Deno Cron 处理程序可以执行各种操作,例如更新 Deno KV 中的状态、ping 网站、发送电子邮件、启动数据库备份、定期调用 API 等等。

它在 Deno Deploy 上的工作原理?

Deno Deploy 如何知道您的代码中有一个 cron,即使没有 Web 服务器处理请求?

当创建您的项目的新的生产部署时,将使用一个短暂的 V8 隔离状态来评估您的项目的顶层作用域,并发现任何 Deno.cron 定义。然后,一个全局 cron 调度器将使用您项目的最新 cron 定义进行更新,其中包括对现有 cron 的更新、新的 cron 和删除的 cron。

全局 cron 调度器是一个可靠的服务,负责根据指定的计划安排和调度 cron 作业。在调度期间,将启动一个按需的 v8 隔离状态,以使用相同的生产部署执行作业。

这 24 行代码创建一个 cron 作业,从公共 API 中获取天气数据,并每小时将数据添加到 Deno KV 中。 Web 服务器端点打印出所有时间戳和天气数据。

在 Deno Deploy 上使用 Deno Cron 可以轻松地创建 cron 作业并在云中托管它们,无需任何配置,只需几分钟即可完成。

其他资源

下一步是什么?

构建可扩展的业务需要能够可靠且轻松地安排作业。Deno Cron 是一种无需不必要的配置即可安排作业的简便方法。

有了 Deno Cron、Deno KVDeno QueuesnpmWeb 标准 API,在 Deno 上构建和启动生产就绪的服务器变得更加简单和高效。但我们还没有达到目标。我们希望向运行时添加更多云原语——敬请期待。

加入 Hacker News 上的讨论。

🚨️ 我们正在积极征求 Deno Cron 的反馈意见 🚨️

如果您在商业用途上使用它(或计划使用它),并希望直接与我们的工程师联系以获得技术支持,请告知我们 通过电子邮件Discord