前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >在 Deno 中设置 CronJob

在 Deno 中设置 CronJob

作者头像
胡琦
发布于 2021-09-09 02:36:52
发布于 2021-09-09 02:36:52
2.7K00
代码可运行
举报
文章被收录于专栏:胡琦胡琦
运行总次数:0
代码可运行

❝群里的大佬已经在探讨"Deno 是一个迈向错误方向的 JavaScript 运行时"了,而我,多年经验的Copy攻城狮,依旧只能看懂些边边角角的知识点,然后分享出来还被大佬批得体无完肤。无奈,以目前Copy攻城狮对JavaScript的掌握程度,也只配 API 调用师的水准。有的人一出生就是王者;有的人从青铜一步一步"迈向CEO赢取白富美走向人生巅峰";有的人同样是青铜,十年以后还是青铜,“慢进则退”,一步一步沦落到“癫疯人生”。废话太多,还是先看看 Deno 中的 CronJob 如何写"Hello World". ❞

什么是 CronJob

CronJob即定时任务,就类似于Linux系统的crontab,在指定的时间周期运行指定的任务。比如小明每天晚上都会问候她异地的女朋友并送温暖,比如“铝盆友彩虹屁 bot”遇上 Deno定时发送邮件就依赖于 Serverless平台提供的周期触发函数功能,再比如在一些服务编排脚本中时常能看到诸如schedule: "*/1 * * * *",也许这就是 CronJob。本质上CronJob是一个调度程序,使应用程序可以调度作业在特定日期或时间自动运行。今天,我们将把CronJob集成到Deno应用程序中,有兴趣看看吗?

安装 Deno

前面的文章中基本都没有提及 Deno 的安装,在国内,我们使用 "vscode-deno 之父“JJC大佬为我们提供的镜像服务进行安装,地址为https://x.deno.js.cn/,简单的安装教程如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 安装最新版
## 使用 Shell:
curl -fsSL https://x.deno.js.cn/install.sh | sh

## 使用 PowerShell:
iwr https://x.deno.js.cn/install.ps1 -useb | iex

# 安装某个特定版本
## 使用 Shell:
curl -fsSL https://x.deno.js.cn/install.sh | sh -s v1.0.0

## 使用 PowerShell:
$v="1.0.0"; iwr https://x.deno.js.cn/install.ps1 -useb | iex

# 验证安装
deno --help

deno_cron

目前deno官方第三方插件库中关于cron的库有3条,其中deno_cron目前 35星。deno_cron 是一个在Deno中使用的智能cron作业调度程序库,它使您可以编写具有大量灵活性的可读cron语法。对于许多开发人员而言,编写cron语法和操作可能非常繁琐。这个插件提供了非常友好的开发人员api,可以编写所需的任何作业计划程序的cron语法。

可通过以下方法引入:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import {cron, daily, monthly, biweekly, weekly, hourly, every15Minute, everyMinute, start, stop } from 'https://deno.land/x/deno_cron/cron.ts';

细心的朋友可能直接去读源码了,核心包括大量空行大概168行,这不禁让我们想起了npm包is-promise,这个只有两行代码的包的周下载量接近千万次,但愿同样的事情不会再复现!

我们可以使用 cron 在Deno中定义自定义时间表,如:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
cron('* * * * * *', () => {
    // run some task
});

# 其中
*    *    *    *    *    *
┬    ┬    ┬    ┬    ┬    ┬
│    │    │    │    │    │
│    │    │    │    │    └ 星期 (0 - 7) (0 或者 7 is 星期日)
│    │    │    │    └─────  (1 - 12)
│    │    │    └──────────  (1 - 31)
│    │    └───────────────  (0 - 23)
│    └────────────────────  (0 - 59)
└─────────────────────────  (0 - 59) - [可选 默认 01]

这些星号是用来做什么的呢?

  • 第一个星号占用秒数。取值范围为0-59
  • 第二个星号使用分钟数,并且取值范围为0-59
  • 第三个星号使用小时数,其值介于0-23之间
  • 第四个星号为月份中的一天,其值在1-31之间
  • 第五个星号为一年中的月份,其值在1-12之间
  • 第六个星号是星期几,取值范围是0-7

例如每隔一秒打印信息和i++的值:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import { cron } from 'https://deno.land/x/deno_cron/cron.ts';

let i = 0;
cron('*/1 * * * * *', () => {
    // run some task
    console.log('This is a same thing', i++)
});

deno cron

当然,除了设置 * , 我们还可以调用其他api,如使用everyMinute执行每分钟的任务:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import { everyMinute } from 'https://deno.land/x/deno_cron/cron.ts';

everyMinute(() => {
    console.log(new Date())
})

deno cron

此外还可以调用 start() 和 stop() 两个方法分别启动和停止所有的 cronjob:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import { cron, start,stop } from 'https://deno.land/x/deno_cron/cron.ts';
let i = 0;
cron('*/1 * * * * *', () => {
    // run some task
    console.log('This is a same thing', i++)
    if (i != 5) {
        start()
    } else {
        console.log('Stop!')
        stop()
    }
});

deno cron

小结

在 deno 中使用 cron,您学废了吗?今天的分享就到这里,希望大家感兴趣的话可以看看源码,如果对您有启发欢迎评论区和我探讨,如有不足之处,欢迎批评指正!

https://github.com/rbrahul/deno_cron/blob/master/cron.ts

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-01-19,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 胡琦 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
【学不动了系列】之 Deno 入门 什么是Deno安装DenoDeno运行时(Runtime)Deno标准库第三方模块
希望大家不要被标题吓到,纯属为了吸引眼球?。。根据笔者这两天的学习感受,Deno 比 Node 更容易入门,如果你有 Node 的基础那更简单了,很多东西都是可以类比的,学起来豪不费力。个人认为现在正
MudOnTire
2020/07/31
1.4K0
【学不动了系列】之 Deno 入门
                            什么是Deno安装DenoDeno运行时(Runtime)Deno标准库第三方模块
Hello, Deno
Deno的创始人和Node的创始人是同一个人。把Node的前两个字母和后两个字母调换了下,destroy node,要用Rust重写js/ts的运行时,来解决设计Node.js之初的缺陷,并要在Deno中解决这些问题。
后端云
2022/11/25
5281
Hello, Deno
初探Deno.js
Node.js 的作者 Ryan Dahl 在 2018 年 JSConf EU 上发布了一篇演讲:10 Things I Regret About Node.js,讲述了 他认为自己在设计 Node.js 时的十个(实际上演讲中只提到七个)失误,包括:没有坚持使用 Promise,使用了 GYP 构建系统,package.json 和 node_modules 的设计失 误等。
杜逸先
2021/06/09
7020
150. 精读《Deno 1.0 你需要了解的》
Deno 将于 2020-05-13 发布 1.0,如果你还有上面的疑惑,可以和我一起通过 Deno 1.0: What you need to know 这篇文章一起了解 Deno 基础知识。
黄子毅
2022/03/14
4430
只需5分钟,让你了解未来可能推翻Node的新轮子 Deno 1.0
最近Nodejs作者Ryan Dahl发布了Deno 1.0正式版,圈子一下沸腾起来了。或许你早在两年前就听说了这个东西,但是也有人不知道这个东西是什么,干什么用的,所以今天我将为大家来简单的聊一下这个将来可能会推翻Node的新轮子。
吴佳
2022/09/26
6390
Serverless + Deno!极速上线女友嘘寒问暖 Bot
作者:胡琦 | GitHub:hu-qi/deno-serverless 很久很久没有提笔写东西了,也意味着很久很久没有瞎折腾 Copy 大法了。我是谁?我是谁并不重要,江湖肯定没有 Copy 攻城狮的传说,不过,也许这是一篇真情露出的踩坑文。以前,听说过「If I have seen further,it is by standing on the shoulders of giants.」,而此刻我正站在 Ryan Dahl[1] 和 乂乂又又[2]的肩膀上,体验万物皆可 Serverless 的 S
腾讯云serverless团队
2020/12/11
8910
Serverless 部署 Deno 应用有那么难吗 ???
「云开发 CloudBase 是腾讯云的热门产品,云开发应用可以是运行在云开发环境的应用,例如一个包含前后端、数据库等能力的服务,可以通过一键部署,直接部署在云开发环境中,使用云开发底层的各项 Serverless 资源,享受弹性免运维的优势。」 什么是云开发?什么是 Serverless?Copy 攻城狮心中满是疑问,还能不能愉快地切图!上一次了解到云开发还是看到“小程序·云开发”,印象比较深刻的是云开发提供一个云函数环境,提供云数据库、鉴权服务等,无需自备服务器搭建后端服务。听过一些老师的课,得益于云开发,前端开发尤其是小程序开发者,一个人就能前后端甚至运维也全干,快速上线一款弹性伸缩企业级应用;而 「Serverles」 是「功能即服务」(Function-as-a-Service,缩写为 FaaS) 和 「平台即服务」(platform as a service,缩写:PaaS 的组合,是当前主流的技术实现;不过,Copy 攻城狮只会跑跑 Hello World 。在 Serverless 技术体系中,我们熟知的 Node.js 扮演着举足轻重的一环,比如 Serverless Framework、Vercel等 Serverless 优秀产品都离不开 Node.js 完善的生态。CloudBase Framework也是如此,因此我们能够轻而易举的想到 CloudBase Framework 的安装和使用方式。
胡琦
2021/09/09
1.7K0
Deno 1.0,来了解一下
经过近两年的等待,官方正式宣布Deno 1.0将于5月13日发布。如今,API已经冻结,倒计时开始。
山月
2020/05/26
1.2K0
Deno 1.0,来了解一下
构建一个带身份验证的 Deno 应用
Node.js 的创建者 Ryan Dahl 创建了一个用于设计 Web 应用程序的新框架。他回过头来,利用在最初编写 Node 时还不可用的新技术,纠正了事后发现的一些错误。这就是 Deno[1](发音为 DEH-no),一个用 TypeScript 编写的 “类似 Node 的” Web 应用的框架。在本文中,我将引导你创建一个带有身份验证的基本 Web 应用。
疯狂的技术宅
2020/08/10
1.5K0
用 Deno 编写一个简单的 REST API
具体的安装及配置可参考官方文档:deno.land, 社区的安装教程可以说是非常丰富了,这里推荐 justjavac 的镜像站点:x.deno.js.cn。如需通过官网安装,可将地址替换为https://deno.land/x/install/:
胡琦
2021/09/09
9000
聊聊Deno的那些事
? 这是第 99 篇不掺水的原创,想要了解更多,请戳上方蓝色字体:政采云前端团队 关注我们吧~ 本文首发于政采云前端团队博客:聊聊Deno的那些事 https://www.zoo.team/arti
政采云前端团队
2021/06/15
1K0
聊聊Deno的那些事
了不起的 Deno 入门篇
Deno 是一个 JavaScript/TypeScript 的运行时,默认使用安全环境执行代码,有着卓越的开发体验。Deno 含有以下功能亮点:
阿宝哥
2020/05/25
3.4K0
了不起的 Deno 入门篇
Deno 入门指南
2018 年时,一篇 如何看待 ry 的项目 deno 的 issue 被中文刷屏的事件? 的文章成功引起了我对 Deno 的注意,cnode 有一篇文章严厉斥责这是中国开发者的耻辱,对此我不敢完全认同,毕竟 996 的大环境下,是很难孵化出国外这种创新精神的。但我并不否认学不学的动,全看个人。本人近期最敬佩的 蜗牛老湿_大圣坚持每日 5 点多起床,做到如此勤奋与持久,何愁学不动?
用户1250838
2021/05/31
1.5K0
Deno 入门指南
deno入门教程
Deno 是一个由 Node.js 的创始人 Ryan Dahl 开发的现代化 JavaScript/TypeScript 运行时环境。它旨在提供安全、简单和高性能的方式来构建 JavaScript 和 TypeScript 应用程序。
用户6297767
2023/11/21
4170
deno入门教程
用最低调的功能,炫最高调的Deno
微信群里 JJC 大佬发出了一个链接,我在 PC 端打开便是上面图中所示。凡尔赛?莫非是 Deno 的新特性?怀着对技术的热情和好奇,我先搜索了一下,原来--“凡尔赛文学”是网络热词,和“打工人“、“后浪“、“内卷“等一起入选《咬文嚼字》2020年度十大流行词。“凡尔赛文学”兴起于微勃,比较典型的范式如““老公竟然送了我一辆粉红的兰博基尼,这颜色选的也太直男了吧,哎,怎么跟他说我不喜欢这个颜色呢?”,通俗地来说,“凡尔赛文学”就是“用最低调的话,炫最高调的耀”,慢慢地居然成为了一门学问--“凡学”(PS:驳学表示不服……了解这么多,其实是我和社会脱轨了,和圈子脱轨了,群里大佬张口就来,而我确是一脸懵逼。好在代码开源,作为资深 Copy攻城狮,加上 Deno 对新手入门比较友好,我便开始研(git)究(clone)大佬的代码,挺有趣的!
胡琦
2021/09/09
3150
WebAssembly 是 Deno 的好搭档
备受期待的 Deno 项目 终于发布了 1.0 版本!Deno 是由 Node.js 的创始人 Ryan Dahl 创建的,旨在解决他所说的“我为 Node.js 感到遗憾的十件事”。
深度学习与Python
2020/08/28
2.4K0
了不起的 Deno 实战教程
相信接触过 Node.js 的读者对 Express、Hapi、Koa 这些 Web 应用开发框架都不会陌生,在 Deno 平台中如果你也想做 Web 应用开发,可以考虑直接使用以下现成的框架:
阿宝哥
2020/05/25
2.5K0
了不起的 Deno 实战教程
最全面的 Deno 入门教程
Deno 是新的 JavaScript 和 TypeScript 运行时。Node.js 的发明者 Ryan Dahl 于 2020 年发布了 Deno,作为 Node.js 的改进。但是 Deno 不是 Node.js,而是全新的 JavaScript 运行时,同时也支持 TypeScript。与 Node.js 相似,Deno 可用于服务器端 JavaScript,但其目的是消除 Node.js 所犯的错误。它就像 Node.js 2.0 一样,只有时间才能告诉我们是否会像 2009 年使用 Node.js 一样去使用它。
疯狂的技术宅
2020/09/01
3.5K0
最全面的 Deno 入门教程
一杯喜茶的时间实战Deno:Deno+MongoDB(内含项目Demo链接)
自从「Deno1.0」发布以来,有关Deno的文章很多,大多数都是在讨论怎么安装Deno、Deno有哪些特点、Deno和Node有哪些异同、Deno是不是Node的替代品等。咱们今天不讨论这些,毕竟Talk is cheap. Show me the code!亲自体验一把Deno开发带来的快感,用Deno搞一个“企业级”应用:deno-supermarket[1],难道不香吗?
JowayYoung
2020/05/28
9650
Deno:现代化 JavaScript 和 TypeScript 运行时的深入解析
Deno 是一个现代化的 JavaScript 和 TypeScript 运行时,由 JavaScript 创始人 Ryan Dahl 于 2018 年发布。它的设计旨在解决传统运行时(例如 Node.js)存在的一些关键问题,同时引入更强大的功能与现代化的开发体验。Deno 的特点、设计理念以及应用场景使其在当代开发中逐渐受到关注。
编程小妖女
2024/12/22
1000
Deno:现代化 JavaScript 和 TypeScript 运行时的深入解析
相关推荐
【学不动了系列】之 Deno 入门 什么是Deno安装DenoDeno运行时(Runtime)Deno标准库第三方模块
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文