首页 > 解决方案 > 应用程序运行一段时间后节点 cron 任务不工作(node-cron、cronr、timexe)

问题描述

我试图让一个节点应用程序在我的笔记本电脑上运行一个 cron 作业,如果我在作业必须实际运行前不久启动该应用程序,它似乎可以工作。我的意思是,例如,如果我将作业设置为在下午 2:05 运行并且我在下午 2 点启动应用程序,它运行良好,但如果我在上午 10 点启动应用程序,我不知道为什么,作业没有运行(但应用程序仍在运行),这很奇怪。

有谁知道锁定我的 macbook(当然不是关闭机器)或让应用程序运行很长时间(比如超过 1-2 小时)对 node 或 macOS 有什么影响,这可能是我的罪魁祸首即使应用程序仍在运行,作业也没有运行?

这很奇怪,因为如果我在作业需要运行之前启动应用程序,一切都会运行良好,就像长时间运行应用程序会使作业无法运行,但应用程序仍然运行。

我对此感到非常困惑,希望我能说清楚。

代码,以防万一:

const Cronr = require("cronr");
const fetch = require("node-fetch");
const job = new Cronr("* 58 18 1 * * *", () => {
  fetch("https://google.com")
   .then((r) => r.text())
   .then((r) => {
     console.log(r);
});
job.start()

标签: javascriptnode.jscronnode-cron

解决方案


也许它与您的系统时钟有关,在我的情况下,我通常使用“正常 cron”依赖。

npm install cron

您可以指定您希望 cron 检查执行计划的时区

var job = new CronJob('5 14 * * *', function() {
  console.log('You will see this message every day at 2:05 pm');
}, null, true, 'America/Los_Angeles');
job.start();

顺便说一句,我给你留下了一个页面链接,以便更轻松地选择你的 cron 计划:https ://crontab.guru/

希望,这对你有帮助

PS:我在使用其他 cron 依赖项时遇到了很多问题,我总是回到这个。


推荐阅读