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

相关文章

springboot使用Scheduling实现动态增删启停定时任务教程

《springboot使用Scheduling实现动态增删启停定时任务教程》:本文主要介绍springboot使用Scheduling实现动态增删启停定时任务教程,具有很好的参考价值,希望对大家有... 目录1、配置定时任务需要的线程池2、创建ScheduledFuture的包装类3、注册定时任务,增加、删

Android使用ImageView.ScaleType实现图片的缩放与裁剪功能

《Android使用ImageView.ScaleType实现图片的缩放与裁剪功能》ImageView是最常用的控件之一,它用于展示各种类型的图片,为了能够根据需求调整图片的显示效果,Android提... 目录什么是 ImageView.ScaleType?FIT_XYFIT_STARTFIT_CENTE

Python的time模块一些常用功能(各种与时间相关的函数)

《Python的time模块一些常用功能(各种与时间相关的函数)》Python的time模块提供了各种与时间相关的函数,包括获取当前时间、处理时间间隔、执行时间测量等,:本文主要介绍Python的... 目录1. 获取当前时间2. 时间格式化3. 延时执行4. 时间戳运算5. 计算代码执行时间6. 转换为指

SpringBoot基于配置实现短信服务策略的动态切换

《SpringBoot基于配置实现短信服务策略的动态切换》这篇文章主要为大家详细介绍了SpringBoot在接入多个短信服务商(如阿里云、腾讯云、华为云)后,如何根据配置或环境切换使用不同的服务商,需... 目录目标功能示例配置(application.yml)配置类绑定短信发送策略接口示例:阿里云 & 腾

Python如何精准判断某个进程是否在运行

《Python如何精准判断某个进程是否在运行》这篇文章主要为大家详细介绍了Python如何精准判断某个进程是否在运行,本文为大家整理了3种方法并进行了对比,有需要的小伙伴可以跟随小编一起学习一下... 目录一、为什么需要判断进程是否存在二、方法1:用psutil库(推荐)三、方法2:用os.system调用

springboot项目如何开启https服务

《springboot项目如何开启https服务》:本文主要介绍springboot项目如何开启https服务方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录springboot项目开启https服务1. 生成SSL证书密钥库使用keytool生成自签名证书将

Android实现两台手机屏幕共享和远程控制功能

《Android实现两台手机屏幕共享和远程控制功能》在远程协助、在线教学、技术支持等多种场景下,实时获得另一部移动设备的屏幕画面,并对其进行操作,具有极高的应用价值,本项目旨在实现两台Android手... 目录一、项目概述二、相关知识2.1 MediaProjection API2.2 Socket 网络

Redis消息队列实现异步秒杀功能

《Redis消息队列实现异步秒杀功能》在高并发场景下,为了提高秒杀业务的性能,可将部分工作交给Redis处理,并通过异步方式执行,Redis提供了多种数据结构来实现消息队列,总结三种,本文详细介绍Re... 目录1 Redis消息队列1.1 List 结构1.2 Pub/Sub 模式1.3 Stream 结

MySQL索引的优化之LIKE模糊查询功能实现

《MySQL索引的优化之LIKE模糊查询功能实现》:本文主要介绍MySQL索引的优化之LIKE模糊查询功能实现,本文通过示例代码给大家介绍的非常详细,感兴趣的朋友一起看看吧... 目录一、前缀匹配优化二、后缀匹配优化三、中间匹配优化四、覆盖索引优化五、减少查询范围六、避免通配符开头七、使用外部搜索引擎八、分

Spring Boot 集成 Quartz并使用Cron 表达式实现定时任务

《SpringBoot集成Quartz并使用Cron表达式实现定时任务》本篇文章介绍了如何在SpringBoot中集成Quartz进行定时任务调度,并通过Cron表达式控制任务... 目录前言1. 添加 Quartz 依赖2. 创建 Quartz 任务3. 配置 Quartz 任务调度4. 启动 Sprin