【问题标题】:Cron jobs do not run in HerokuCron 作业不在 Heroku 中运行
【发布时间】: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


    【解决方案1】:

    在 Heroku 的免费版本中,服务器会在 30 分钟不活动后进入休眠状态,否则将根据您每月剩余的免费测功小时数而始终开启。

    爱好计划永不眠

    Heroku Pricing

    【讨论】:

      猜你喜欢
      • 2013-07-02
      • 1970-01-01
      • 2012-01-27
      • 1970-01-01
      • 2011-04-22
      • 2018-12-09
      • 2014-07-22
      相关资源
      最近更新 更多