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 提供了三种传统布局方式(盒子如何进行排列顺序) 普通流(标准流)浮动定位 实际开发中,一个页面基…

Go 反射技术判断结构体字段数据为空

Api介绍 在Go语言中,反射API用于在运行时检查类型信息、获取和修改变量的值以及调用对象的方法。反射API包含了一组函数和类型,可以在程序运行时动态地操作对象。 以下是一些常用的反射API: reflect.TypeOf:返回一个值的类型信息。…

并查集基础模板

题目我上面有人儿 代码 #include <bits/stdtr1c.h> using namespace std; const int N 1005; int f[N]; int n; int siz[N]; // 初始化并查集 // void init() // { // for (int i 1; i < n; i) // { // f[i] i; // 初始化所有的节点都是自己的父节点 //…

Tomcat头上有个叉叉

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

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

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

day11 前k个高频元素

// 小顶堆 class mycomparison { public: bool operator()(const pair<int, int>& lhs, const pair<int, int>& rhs) { return lhs.second > rhs.second; } }; vector<int> topKFrequent(vector<int>& nums, int k) { // 要统计元素出现…

智能外呼有什么好处?

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

spring IOC bean为什么默认是单例的

首先解释一下什么是单例 bean&#xff1f; 单例的意思就是说在 Spring IoC 容器中只会存在一个 bean 的实例&#xff0c;无论一次调用还是多次调用&#xff0c;始终指向的都是同一个 bean 对象 用代码来解释单例 bean public class UserService {public void sayHello() {Syst…

交叉编译工具链makefile

linux系统默认搜索头文件地址&#xff1a;/usr/include/文件夹&#xff1b; Windows系统默认搜索头文件地址&#xff1a;不同软件好像可以设置不同的地址&#xff1b;例如visual studio好像可以设置附加包含目录&#xff0c;包含目录等 Linux系统库文件路径&#xff1a;/lib文…

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

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

命运天注定?

罗翔老师经常说&#xff1a;人这一生&#xff0c;能自己决定的也许只有5&#xff05;&#xff0c;有95%是你决定不了的。 不是说事在人为&#xff0c;人定胜天吗&#xff1f; 哪吒也在电影的高潮喊出了&#xff1a;我命由我不由天。 听上去很热血&#xff0c;但实际咱们每个…

Java泛型:详解使用技巧及举例说明

Java泛型&#xff1a;详解使用技巧及举例说明 1. 引言 Java泛型是一项强大的编程概念&#xff0c;它允许我们编写通用的代码&#xff0c;在编写代码时不需要预先指定具体的数据类型。泛型的引入解决了在传统的编程中需要频繁进行类型转换的问题&#xff0c;提高了代码的安全性…

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

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

算法竞赛---反悔贪心

反悔贪心 Work Scheduling G 什么是返回贪心呢&#xff0c;就是先选择&#xff0c;遇到更好的之后在反悔选择更好的&#xff0c;这是符合贪心的逻辑的。 #include <bits/stdc.h> // https://www.luogu.com.cn/problem/P2949 using namespace std; struct node {int d,…

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

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

公务员国考省考小白需知

文章目录&#xff1a; 一&#xff1a;分类 1.国考 2.省考 二&#xff1a;必备途径 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.群聊如何找 三…

笙默考试管理系统-MyExamTest----codemirror(53)

笙默考试管理系统-MyExamTest----codemirror&#xff08;53&#xff09; 目录 笙默考试管理系统-MyExamTest----codemirror&#xff08;51&#xff09; 一、 笙默考试管理系统-MyExamTest----codemirror 二、 笙默考试管理系统-MyExamTest----codemirror 三、 笙默考试…

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

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

ATM的转账

【 1 】明确我们要实现的功能 # 用户功能菜单 # 1.注册 # 2.登陆 # 3.取款 # 4.转账 # 5.充值余额 # 6.查看流水 # 7.查看银行信息(查看自己…