0

0

浅谈Nodejs中要怎么做定时任务

青灯夜游

青灯夜游

发布时间:2021-10-25 09:49:42

|

3344人浏览过

|

来源于掘金社区

转载

本篇文章给大家介绍一下node定时任务的实现方法,希望对大家有所帮助!

浅谈Nodejs中要怎么做定时任务

目前我们遇到了这样一个需求,每个用户都可以自定义定时推送,定时任务的时间配置由用户自己配置,随时修改,而不是传统的由服务器设定好时间跑定时任务。【推荐学习:《nodejs 教程》】

如果是已知定时任务循环周期,那么Linux Crontab 定时任务即可实现。在node中也已经有相对成熟的方案。下面将我自己了解到的Node定时任务方案方案做一个介绍。

egg框架提供的schduler定时任务

egg是阿里旗下的Node企业级应用框架,它提供了一套机制给开发者优雅的编写定时任务,详细参考官方文档:https://eggjs.org/zh-cn/basics/schedule.html ,这里不对具体用法做详细阐述,只简单讲一下它的配置用法。

1.静态定时任务,即定时周期,处理逻辑写死。

2.动态配置定时任务,这种相对来说灵活一点,开发者可以通过配置文件控制定时任务周期。

3.通过代码手动触发定时任务,我们可以根据一些逻辑判断是否触发定时任务。

从上述三点看,egg提供的定时任务不能满足我们需要用户自行配置定时周期的需求,所以只能寻求其他方案,通过查询资料我们发现了node-schedule的库也提供了定时任务的功能。

稿定AI设计
稿定AI设计

AI自动去水印、背景消除、批量抠人像工具

下载

node-schedule

在浏览了node-schudule的文档 https://www.npmjs.com/package/node-schedule 之后,他的用法如下:

const schedule = require('node-schedule');

const job = schedule.scheduleJob('42 * * * *', function(){
  console.log('The answer to life, the universe, and everything!');
});

是的,他支持自定义定时周期,可以满足我们的需求,可以作为我们的选择,Nice!

继续浏览其他开发者的使用文章,发现有一个node-schedule的相关问题记录,简要说就是定时器在预定时间执行了2次,具体问题见原文:https://cnodejs.org/topic/5b58414b8d66b90b2b7384a7 。这是一个低概率的问题,我们没有去做验证,因为我们的需求,及时定时器执行两次,对我们的结果并没有影响,所以这不是阻碍我们使用它的障碍,有兴趣的同学可以去测测bug。

写在最后

最后这里是对我们自己项目定时定时任务解决方案的总结,不感兴趣的同学可略过。

我们的后端就是用的egg框架,所以最后我们的解决方案是在agent进程中加了node-schdule的定时器,用户的定时器都会同步的agent进程中执行,目前我们的用户量不大,暂时只想到了这种解决方式,后续起量后可能会分布式部署后台。

这会是一个问题,量大的话单进程跑也会是一个问题,并且egg本身不建议在agent进程中做太多业务相关的东西。还有个比较重要的是agent是辅助进程,一些work的公共工作实在agent中完成的,agent发生未捕获的错误不会退出重启,所以容错处理必须要做,而且要做好。

更多编程相关知识,请访问:编程视频!!

相关专题

更多
c++ 根号
c++ 根号

本专题整合了c++根号相关教程,阅读专题下面的文章了解更多详细内容。

22

2026.01.23

c++空格相关教程合集
c++空格相关教程合集

本专题整合了c++空格相关教程,阅读专题下面的文章了解更多详细内容。

24

2026.01.23

yy漫画官方登录入口地址合集
yy漫画官方登录入口地址合集

本专题整合了yy漫画入口相关合集,阅读专题下面的文章了解更多详细内容。

99

2026.01.23

漫蛙最新入口地址汇总2026
漫蛙最新入口地址汇总2026

本专题整合了漫蛙最新入口地址大全,阅读专题下面的文章了解更多详细内容。

132

2026.01.23

C++ 高级模板编程与元编程
C++ 高级模板编程与元编程

本专题深入讲解 C++ 中的高级模板编程与元编程技术,涵盖模板特化、SFINAE、模板递归、类型萃取、编译时常量与计算、C++17 的折叠表达式与变长模板参数等。通过多个实际示例,帮助开发者掌握 如何利用 C++ 模板机制编写高效、可扩展的通用代码,并提升代码的灵活性与性能。

15

2026.01.23

php远程文件教程合集
php远程文件教程合集

本专题整合了php远程文件相关教程,阅读专题下面的文章了解更多详细内容。

65

2026.01.22

PHP后端开发相关内容汇总
PHP后端开发相关内容汇总

本专题整合了PHP后端开发相关内容,阅读专题下面的文章了解更多详细内容。

61

2026.01.22

php会话教程合集
php会话教程合集

本专题整合了php会话教程相关合集,阅读专题下面的文章了解更多详细内容。

63

2026.01.22

宝塔PHP8.4相关教程汇总
宝塔PHP8.4相关教程汇总

本专题整合了宝塔PHP8.4相关教程,阅读专题下面的文章了解更多详细内容。

33

2026.01.22

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
快速入门Node.JS全套完整版
快速入门Node.JS全套完整版

共83课时 | 8.4万人学习

nodejs开发基础教程
nodejs开发基础教程

共15课时 | 4.5万人学习

JavaScript设计模式视频教程
JavaScript设计模式视频教程

共28课时 | 5.3万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号