JS 云服务 Deno Depoly 宣布,推出定时运行功能 Deno Cron

2023-12-11 08:45

本文主要是介绍JS 云服务 Deno Depoly 宣布,推出定时运行功能 Deno Cron,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

如果需要定时执行 JS 脚本,以后多一个选项。

Web 构建日益复杂。编写现代软件包括利用云基础设施、剖析模板代码和管理复杂的配置,而开发人员只想专注于编写业务逻辑。

Deno 旨在通过删除配置和不必要的模板,从根本上简化 Web 开发。我们将无服务器数据库 Deno KV 和 Deno Queues(一种卸载任务或安排未来工作的方法)直接内置到运行时中,因此将它们添加到应用程序中只需几行代码即可。

今天,我们很高兴通过引入 Deno Cron 来简化 Web 开发,这是一种创建预定作业的简单方法:

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 完全回避了这一点。

我们还致力于支持 JavaScript 友好的 API,用于指定 cron 计划。

Deno Deploy 上的 Deno Cron

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

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

我们还在 Deno Deploy 面板中添加了一个新的 Cron 选项卡,它可以显示项目中所有激活的 cron 作业:

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

您的 cron 作业将显示在日志中

要修改或停止现有的 cron,请更改代码并创建新的部署。例如,如果从代码中移除 Deno.cron 并进行部署,这些作业将不再计划运行。

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

它在 Deno Deploy 上如何工作?

即使没有 Web 服务器处理请求,Deno Deploy 到底如何知道代码中存在 cron

创建项目的新生产部署时,会使用短暂的 V8 隔离来评估项目的顶层范围并发现任何 Deno.cron 定义。然后,全局 cron 调度程序会根据项目的最新 cron 定义进行更新,其中包括对现有 crons、新 crons 和已删除 crons 的更新。

全局 cron 调度器是一项可靠的服务,负责根据指定的计划调度和分派 cron 作业。在调度过程中,按需 v8 隔离程序会启动,使用相同的生产部署执行作业。

// deno-cron-weatherconst db = await Deno.openKv();// Hourly cron job to write weather data time series to Deno KV
Deno.cron("Write weather data to Deno KV", "0 * * * *", async () => {console.log("Pull weather data and set to Deno KV");const res = await fetch('https://api.open-meteo.com/v1/forecast?latitude=34.0522&longitude=-118.2437&hourly=temperature_2m,precipitation&timezone=America%2FLos_Angeles');const body = await res.json();const date = new Date(Date.now()).toString();await db.set(["weather", date], {temperature: body.hourly.temperature_2m[0],precipitation: body.hourly.precipitation[0]});
});// HTTP server to get the weather data time series
Deno.serve(async (_req) => {const entries = db.list({ prefix: ["weather"] });let responseString = "";for await (const entry of entries) {responseString += `${entry.key[1]}: ${entry.value.temperature}°C with ${entry.value.precipitation}mm precipitation\n`;}return new Response(responseString);
})

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

这篇关于JS 云服务 Deno Depoly 宣布,推出定时运行功能 Deno Cron的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/480108

相关文章

Java中Springboot集成Kafka实现消息发送和接收功能

《Java中Springboot集成Kafka实现消息发送和接收功能》Kafka是一个高吞吐量的分布式发布-订阅消息系统,主要用于处理大规模数据流,它由生产者、消费者、主题、分区和代理等组件构成,Ka... 目录一、Kafka 简介二、Kafka 功能三、POM依赖四、配置文件五、生产者六、消费者一、Kaf

windos server2022的配置故障转移服务的图文教程

《windosserver2022的配置故障转移服务的图文教程》本文主要介绍了windosserver2022的配置故障转移服务的图文教程,以确保服务和应用程序的连续性和可用性,文中通过图文介绍的非... 目录准备环境:步骤故障转移群集是 Windows Server 2022 中提供的一种功能,用于在多个

基于Python开发电脑定时关机工具

《基于Python开发电脑定时关机工具》这篇文章主要为大家详细介绍了如何基于Python开发一个电脑定时关机工具,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1. 简介2. 运行效果3. 相关源码1. 简介这个程序就像一个“忠实的管家”,帮你按时关掉电脑,而且全程不需要你多做

Go语言实现将中文转化为拼音功能

《Go语言实现将中文转化为拼音功能》这篇文章主要为大家详细介绍了Go语言中如何实现将中文转化为拼音功能,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 有这么一个需求:新用户入职 创建一系列账号比较麻烦,打算通过接口传入姓名进行初始化。想把姓名转化成拼音。因为有些账号即需要中文也需要英

解决systemctl reload nginx重启Nginx服务报错:Job for nginx.service invalid问题

《解决systemctlreloadnginx重启Nginx服务报错:Jobfornginx.serviceinvalid问题》文章描述了通过`systemctlstatusnginx.se... 目录systemctl reload nginx重启Nginx服务报错:Job for nginx.javas

基于WinForm+Halcon实现图像缩放与交互功能

《基于WinForm+Halcon实现图像缩放与交互功能》本文主要讲述在WinForm中结合Halcon实现图像缩放、平移及实时显示灰度值等交互功能,包括初始化窗口的不同方式,以及通过特定事件添加相应... 目录前言初始化窗口添加图像缩放功能添加图像平移功能添加实时显示灰度值功能示例代码总结最后前言本文将

解决Cron定时任务中Pytest脚本无法发送邮件的问题

《解决Cron定时任务中Pytest脚本无法发送邮件的问题》文章探讨解决在Cron定时任务中运行Pytest脚本时邮件发送失败的问题,先优化环境变量,再检查Pytest邮件配置,接着配置文件确保SMT... 目录引言1. 环境变量优化:确保Cron任务可以正确执行解决方案:1.1. 创建一个脚本1.2. 修

使用Python实现批量访问URL并解析XML响应功能

《使用Python实现批量访问URL并解析XML响应功能》在现代Web开发和数据抓取中,批量访问URL并解析响应内容是一个常见的需求,本文将详细介绍如何使用Python实现批量访问URL并解析XML响... 目录引言1. 背景与需求2. 工具方法实现2.1 单URL访问与解析代码实现代码说明2.2 示例调用

如何使用celery进行异步处理和定时任务(django)

《如何使用celery进行异步处理和定时任务(django)》文章介绍了Celery的基本概念、安装方法、如何使用Celery进行异步任务处理以及如何设置定时任务,通过Celery,可以在Web应用中... 目录一、celery的作用二、安装celery三、使用celery 异步执行任务四、使用celery

最好用的WPF加载动画功能

《最好用的WPF加载动画功能》当开发应用程序时,提供良好的用户体验(UX)是至关重要的,加载动画作为一种有效的沟通工具,它不仅能告知用户系统正在工作,还能够通过视觉上的吸引力来增强整体用户体验,本文给... 目录前言需求分析高级用法综合案例总结最后前言当开发应用程序时,提供良好的用户体验(UX)是至关重要