javascript - 应用程序运行一段时间后节点 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()
解决方案
也许它与您的系统时钟有关,在我的情况下,我通常使用“正常 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 依赖项时遇到了很多问题,我总是回到这个。
推荐阅读
- angular - 我在路由方面遇到问题,Angular 在单击链接之前显示组件
- node.js - 如何修复登录错误:在护照 js 中登录此应用程序时出现错误?
- node.js - MERN 堆栈 webapp 显示空白屏幕 Android 移动浏览器,作为 React-Redux 前端,Node-Express 后端
- javascript - 更新对象数组中的单个对象键值反应 redux 状态
- puppet - 使用 Puppet 为 Debian 设置存储库
- symfony - 是否可以在 Symfony 4 中使用没有 AppBundle 的 ongr-elasticsearch 包?
- sql-server - 将字段从 nVarchar 转换为 Numeric,用于多行性能的 sql 函数
- c - 如何使我的代码独立于“RTOS”?
- wordpress - 用于 Wordpress 的 Gutenburg 组件的标准编辑器样式
- phpmyadmin - 无法连接到远程数据库