【发布时间】:2022-01-16 21:58:41
【问题描述】:
我正在开发一个 Nodejs 服务器,并将其上传到 Heroku。该文件有一个 Cron 作业,旨在每 4 小时运行一次。但是当我登记入住时,什么也没有发生。我正在使用 Heroku 的免费版本,而且我似乎没有超过我的免费 Dyno 小时数限制。
我的 Index.js 文件中的代码如下所示。正如您在这个简单示例中所看到的,我只希望应用程序每 4 小时记录一次时间。我还更新了一个变量,该变量应指示最新更新,可用于检查更新状态。
import express from 'express';
const app = express();
import cors from 'cors';
app.use(cors());
import cron from 'node-cron';
import dotenv from 'dotenv'
dotenv.config()
const port = process.env.PORT || 3050;
var lasttime = '';
var task = cron.schedule("0 0 */4 * * *",() => {
console.log("date: "+Date());
lasttime = Date();
}, {
scheduled: true
}
);
app.get('/api_x', async (request, response) => {
reply=lasttime;
response.json({reply:reply});
});
当我在本地计算机上运行它时,它运行良好。当我在 Heroku 上运行它时,它会记录一次消息,上次不更新变量,然后什么也不做。 当我在 Heroku 上检查应用程序的日志时,它显示:
Unidling
State changed from down to starting
Starting process with command npm start
webdesign@1.0.0 start /app
node index.js
listening at 10006
State changed from starting to up
什么可能导致我的 Cron 作业无法运行? (我也试过用setInterval,还是没有结果。)
【问题讨论】:
标签: javascript node.js heroku cron node-cron