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

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

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

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

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

egg框架提供的schduler定时任务

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

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

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

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

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

node-schedule

在浏览了node-schudule的文档 node 之后,他的用法如下:

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次,具体问题见原文:node 。这是一个低概率的问题,我们没有去做验证,因为我们的需求,及时定时器执行两次,对我们的结果并没有影响,所以这不是阻碍我们使用它的障碍,有兴趣的同学可以去测测bug。

写在最后

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

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

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

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

以上就是浅谈Nodejs中要怎么做定时任务的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2706879.html

(0)
上一篇 2025年3月7日 20:06:47
下一篇 2025年2月24日 19:37:14

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • windows怎么卸载nodejs

    windows卸载nodejs的方法:1、在桌面左下角单击【开始】按钮,然后选择【控制面板】;2、在控制面板窗口中找到【卸载程序】,单击打开;3、找到node.js并单击右键选择【卸载】即可。 本文操作环境:Windows7系统、nodej…

    2025年3月7日 编程技术
    200
  • 怎样删除nodejs

    删除nodejs的方法:1、从“控制面板”的“卸载程序”界面中卸载node程序;2、杀死所有与节点相关的进程;3、检查环境变量以确保没有引用Nodejs或npm存在即可。 本文操作环境:Windows7系统、nodejs10.16.2版、D…

    2025年3月7日
    200
  • 命令行怎么查看nodejs版本号

    命令行查看nodejs版本号的方法:1、使用“win+r”快捷键打开“运行”窗口,输入cmd命令,点击“确定”,打开“cmd命令行窗口”;2、在cmd命令行中,使用cd命令进入node安装目录 ,执行“node -v”命令,即可查看版本号。…

    2025年3月7日 编程技术
    200
  • 怎么用nodejs运行脚本

    运行方法:1、打开cmd命令窗口,执行“node”命令进入node编辑模式,输入js脚本代码,回车运行即可。2、将js脚本代码写入js文件中,在cmd命令窗口中执行“node js文件路径”即可。 本教程操作环境:windows7系统、no…

    2025年3月7日 编程技术
    200
  • nodejs有什么优点

    nodejs的优点:1、Nodejs语法完全是js语法,只要懂js基础就可以学会Nodejs后端开发;2、处理高并发场景性能更高;3、可实现高性能服务器;4、开发周期短、开发成本低、学习成本低。 本教程操作环境:windows7系统、nod…

    2025年3月7日
    100
  • nodejs如何查看版本

    nodejs查看版本的方法:1、打开“开始”菜单,在搜索框输入“cmd”;2、在搜索结果中,点击“cmd.exe”,打开cmd命令窗口;3、使用cd命令进入nodejs安装目录;4、执行“node -v”命令即可查看版本。 本教程操作环境:…

    2025年3月7日 编程技术
    200
  • 深入浅析Node.js中的包与NPM

    本篇文章带大家了解一下node.js的包管理工具:包与npm,希望对大家有所帮助! 摘要:包与NPM Node组织了自身的核心模块,也使得第三方文件模块可以有序的编写和使用。 包与NPM Node组织了自身的核心模块,也使得第三方文件模块可…

    2025年3月7日
    100
  • 认识Node.js,聊聊node的模块化

    本篇文章带大家认识一下node.js,看看如何查看已安装的 node.js 的版本号 ,并一起聊聊node的模块化,希望对大家有所帮助! Node.js简介 概念: 是一个基于 Chrome V8 引擎的 JavaScript 运行环境。【…

    2025年3月7日 编程技术
    200
  • 深入解析Node.js中的非阻塞I/O

    本篇文章带大家了解一下node.js中的非阻塞i/o,希望对大家有所帮助! 如何理解NodeJs的非阻塞I/O 1、I/O:即  Input/output  指一个系统的输入和输出 2 、非阻塞和阻塞的主要区别在:在接收输入到输出结果之间的…

    2025年3月7日 编程技术
    200
  • 一文聊聊Node.js中的event-loop机制

    本篇文章带大家一起来了解一下node.js中的event-loop(时间循环)机制,希望对大家有所帮助! 今天我们来学习下nodeJs中的event-loop。event-loop的理解对我来讲一直都是一个比较大的难点,希望通过这次的学习把…

    2025年3月7日 编程技术
    200

发表回复

登录后才能评论