Nodejs 定时任务:用 Linux 的 crontabs 设置好还是写个 node 来设置好?

Nodejs 定时任务:用 Linux 的 crontabs 设置好还是写个 node 来设置好?
有这么一个需求,一个用 node 写的整理数据的程序需要定时请求一个另一个服务器收集好的数据。也就一天一次。那么这个定时任务使用 node-schedule 来做好还是 crontabs 来执行 node 好?

9 回复

有错误处理么?
没有的话直接 crontab 就可以了


两个都尝试过,最终还是写熟练的 node 比较舒服。小东西还是哪个熟练用哪个。

有道理~

都可以,一起的话( node-schedule ),部署简单。

将逻辑和定时配置分开也有好处,符合现在 Serverless 趋势,到云部署定时配置属于 operation 范围。

在用 node 的 cron。。。

感觉既然是 node 写的 还是用 node 自身的吧
以后想维护也不需要维护多个位置

简单就用 crontab

如果出现下列问题, crontab 至少能让第二天程序还能运行起来
1.内存泄露
2. 没有 catch 所有的异常
3. 程序崩了
4. 服务器重启了

用 node-schedule 之类的方案, 至少也要搭配 pm2 之类的进程守护

哪个熟练用哪个? 我自己是 pm2 + node-schedule

crontab 啊,crond 常驻后台的资源比 node 常驻后台的省多了

在Node.js中设置定时任务时,选择使用Linux的crontabs还是直接在Node.js中编写代码,各有优缺点。以下是对两种方法的简要分析和代码示例:

使用Linux的crontabs

优点

  • crontabs是Linux系统的原生功能,无需额外依赖。
  • 易于管理和调试,通过crontab -e即可编辑和查看任务。

缺点

  • 与Node.js代码分离,可能需要在Node.js应用之外管理定时任务。
  • 定时任务依赖于Linux环境,移植性较差。

示例

# 每天凌晨1点执行Node.js脚本
0 1 * * * /usr/bin/node /path/to/your/script.js

使用Node.js编写定时任务

优点

  • 定时任务与Node.js代码集成,便于统一管理和维护。
  • 可以利用Node.js的异步I/O和事件驱动特性,实现更复杂的任务逻辑。

缺点

  • 需要额外的Node.js库(如node-cronnode-schedule)。
  • 如果Node.js应用崩溃,定时任务也会受到影响。

示例(使用node-cron库):

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

cron.schedule('0 1 * * *', () => {
  console.log('Running scheduled task...');
  // 在这里执行你的任务逻辑
});

总结

如果你的Node.js应用需要在多个环境中部署,且定时任务相对简单,建议使用crontabs。如果你希望定时任务与Node.js代码紧密集成,并且需要更复杂的任务逻辑,那么使用Node.js编写定时任务可能更合适。

回到顶部