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 作业并将其托管在云中,无需任何配置,只需几分钟即可完成。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/213037.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

网络攻击(三)--攻击阶段

5. 威胁建模阶段 目标 了解威胁建模阶段的工作内容 工作内容 威胁建模主要使用在情报搜集阶段所获取到的信息,来标识出目标系统上可能存在的安全漏洞与弱点。 在进行威胁建模时,确定最为高效的攻击方法、所需要进一步获取到的信息,以及从…

【前端】CSS浮动(学习笔记)

一、浮动 1、传统网页布局 网页布局的本质:用 CSS 来摆放盒子,把盒子摆放到相应位置。 CSS 提供了三种传统布局方式(盒子如何进行排列顺序) 普通流(标准流)浮动定位 实际开发中,一个页面基…

Tomcat头上有个叉叉

问题原因: 这是因为它就是个空的tomcat,并没有导入项目运行 解决方案: war模式:发布模式,正式发布时用,将WEB工程以war包的形式上传到服务器 war exploded模式:开发时用,将WEB工程的文件夹直接…

【网络协议】LACP(Link Aggregation Control Protocol,链路聚合控制协议)

文章目录 LACP名词解释LACP工作原理互发LACPDU报文确定主动端确定活动链路链路切换 LACP和PAgP有什么区别?LACP与LAG的关系LACP模式更优于手动模式LACP模式对数据传输更加稳定和可靠LACP模式对聚合链路组的故障检测更加准确和有效 推荐阅读 LACP名词解释 LACP&…

智能外呼有什么好处?

智能外呼是一种自动化的电话营销方式,利用AI智能外呼技术和大量数据分析,帮助企业实现与客户之间的高效、精准、个性化的客户沟通,还可以在客户服务、市场营销和销售等方面带来助力。那么,智能外呼有什么好处呢? 1. 提…

通过生成模拟释放无限数据以实现机器人自动化学习

该工作推出RoboGen,这是一种生成机器人代理,可以通过生成模拟自动大规模学习各种机器人技能。 RoboGen 利用基础模型和生成模型的最新进展。该工作不直接使用或调整这些模型来产生策略或低级动作,而是提倡一种生成方案,该方案使用…

simulink MATLABFunction模块中实时函数调用函数的使用

样例 function Predyy matlabceshi(input, Time_s) input1 input; Time_s1 Time_s; Predyy ee(input1) mm(Time_s1); end 上面是主要部分,下面是被调用部分 function A ee(input1) A input1 * 100; end function B mm(Time_s1) B Time_s1 * 100; end 模型…

Linux(ubuntu)利用ffmpeg+qt设计rtsp_rtmp流媒体播放器(完全从0开始搭建环境进行开发)

一、前言 从0开始搭建Linux下Qt、ffmpeg开发环境。 从安装虚拟机开始、安装Linux(Ubuntu)系统、安装Qt开发环境、编译ffmpeg源码、配置ffmpeg环境、编写ffmpeg项目代码、完成项目开发。 完全从0开始搭建环境进行开发 完全从0开始搭建环境进行开发 完全从0开始搭建环境进行开…

公务员国考省考小白需知

文章目录: 一:分类 1.国考 2.省考 二:必备途径 1.相关网站 1.1 官网 1.1.1 必须知道的 1.1.2 比较好用的 1.1.3 事业单位的 1.2 机构 ​​1.3 时事 ​​1.4 资源 1.5 题库 1.6 真题 ​2.相关公主号 3.应用 4.群聊如何找 三…

【TwinCAT学习笔记 1】TwinCAT开发环境搭建

写在前面 作为技术开发人员,开启任何一项开发工作之前,首先都要搭建好开发环境,所谓磨刀不误砍材工,一定要有耐心,一次不行卸载再装。我曾遇到过一个学生,仅搭建环境就用了两周,这个过程也是一…

SSD数据在写入NAND之前为何要随机化?-part2

接part1介绍: 如何达到这个目的?业内常用的是对写入数据的数据进行随机化处理,这部分主要在SSD控制器中通过硬件实现。 上图b/c:在控制器芯片通过硬件方式实现随机化的读写流程,这个也是业内通常做法。随机化处理是在写…

【K8S in Action】服务:让客户端发现pod 并与之通信(1)

服务是一种为一组功能相同的 pod 提供单一不变的接入点的资源。当服务存在时,它的 IP 地址和端口不会改变。 客户端通过 IP 地址和端口号建立连接, 这些连接会被路由到提供该服务的任意一个 pod 上。 pod 是短暂,会删除增加,调度…

Android 13 Settings蓝牙列表卡顿问题排查及优化过程

一.背景 此问题是蓝牙列表界面息屏后再点击亮屏蓝牙界面卡住,划不动也不能返回,在人多的时候(附近开启的蓝牙设备过多的时候)会卡住大概四五秒才能滑动. 优化前效果见资源: 二.查找耗时点 根据Android Studio的Profiler工具进行排查,查找主线程时间线比较长的方法,如下:…

IDEA远程调试与JDWP调试端口RCE漏洞

文章目录 前言Docker远程调试Java调试原理远程调试实践 JDWP端口RCE调试端口探测调试端口利用 总结 前言 在对一些 Java CVE 漏洞的调试分析过程中,少不了需要搭建漏洞环境的场景,但是本地 IDEA 搭建的话既麻烦(通过 pom.xml 导入各种漏洞组…

Zookeeper系统性学习-应用场景以及单机、集群安装

Zookeeper 是什么? Zookeeper 为分布式应用提供高效且可靠的分布式协调服务,提供了诸如统一命名服务、配置管理和分布式锁等分布式的基础服务。在解决分布式数据一致性方面,ZooKeeper 并没有直接采用 Paxos 算法,而是采用了名为 …

Android Studio Gradle下载慢解决方法

Android Studio Gradle下载慢解决方法 最近在练习模型部署,主要是在手机端部署,所以使用到了Android Studio,但是在创建项目的时候,一致在下载gradle,而且网速还很慢,不对,是极慢哪种&#xff0…

MQTT发布、订阅和取消订阅

在本文中,我们将深入了解MQTT发布、订阅和取消订阅相关的内容。如果你刚接触发布/订阅模型,建议阅读本专栏之前的文章。 什么是MQTT发布消息 在MQTT中,一个客户端连接到代理(broker)之后可以立即发布消息。这些消息依…

NetSuite预算管理实践

NetSuite预算相关的原生功能有两个: 一个是Expense Commitments And Budget Validation这个SuiteApp,我们在一年前写过一篇文章介绍过。它强调预算的过程控制,但由于功能很有限,没有实际用处。 NetSuite Budget功能包_netsuite …

Vue3 pinia的基本使用

pinia的使用跟vuex很像,去除了很多没用的api,写法有两种,一种老式的选项式api还有一种组合式api,用哪种根据自己喜好来,以下示例为组合式api 更多教程参考官网:pinia官网https://pinia.vuejs.org/zh/ 安装…

机器学习基本概念2

资料来源: https://www.youtube.com/watch?vYe018rCVvOo&listPLJV_el3uVTsMhtt7_Y6sgTHGHp1Vb2P2J&index1 https://www.youtube.com/watch?vbHcJCp2Fyxs&listPLJV_el3uVTsMhtt7_Y6sgTHGHp1Vb2P2J&index2 分三步 1、 定义function b和w是需要透…