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");
});
在这篇文章中,我们将介绍
使用 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 仪表板中添加了一个新的 Cron
选项卡,显示您项目中的所有活动 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 隔离状态,以使用相同的生产部署执行作业。
在 Deno Deploy 上使用 Deno Cron 可以轻松地创建 cron 作业并在云中托管它们,无需任何配置,只需几分钟即可完成。
其他资源
下一步是什么?
构建可扩展的业务需要能够可靠且轻松地安排作业。Deno Cron 是一种无需不必要的配置即可安排作业的简便方法。
有了 Deno Cron、Deno KV、Deno Queues、npm 和 Web 标准 API,在 Deno 上构建和启动生产就绪的服务器变得更加简单和高效。但我们还没有达到目标。我们希望向运行时添加更多云原语——敬请期待。
🚨️ 我们正在积极征求 Deno Cron 的反馈意见 🚨️
如果您在商业用途上使用它(或计划使用它),并希望直接与我们的工程师联系以获得技术支持,请告知我们 通过电子邮件 或 Discord。