1

我添加了两个 cron 作业,每 15 分钟和每 3 小时运行一次,在此期间我无法访问 API。我收到 502 bad gateway 错误。

import Agenda from 'agenda';
import { updateCinemaData } from './updateCinemaData';
import { updateStreamingData } from './updateStreamingData';
import dotenv from 'dotenv';

dotenv.config();

const uri = process.env.MONGO_URI;
const MAX_CONCURRENCY_JOBS = 4;

const agenda = new Agenda({
    db: {
        address: uri,
        options: { useNewUrlParser: true },
        collection: 'schedule-jobs'
    },
    processEvery: '30 seconds',
});

const graceful = async () => {
    await agenda.stop();
    process.exit(0);
};

process.on('SIGTERM', graceful);
process.on('SIGINT', graceful);

agenda.define('get cinema data', { priority: 1 }, async (job, done) => {
    console.log('get cinema data')
    await updateCinemaData();
    done();
});

agenda.define('get streaming data', { priority: 2 }, async (job, done) => {
    console.log('get streaming data')
    await updateStreamingData();
    done();
});


(async function () {
    const getCinemaData = agenda.create('get cinema data', {});
    const getStreamingData = agenda.create('get streaming data', {});

    await agenda.start();
    agenda.maxConcurrency(MAX_CONCURRENCY_JOBS);

    const jobNames = [
        'get cinema data',
        'get streaming data'
    ];

    for (let jobName of jobNames) {
        try {
            let jobs = await agenda.jobs({ name: jobName });
            for (let job of jobs) {
                job.remove();
            }
        } catch (error) {
            console.log(error);
        }
    }

    await getCinemaData.repeatEvery('*/15 * * * *').save(); //Runs every 15 mins.
    await getStreamingData.repeatEvery('* */2 * * *').save(); //Runs every 3 hours.
})();

export default agenda;

为了捕获所有异常,我在 server.js 中添加了以下代码

process.on('uncaughtException', function (exception) {
    log.error(exception); 
});

有了这个,我也无法得到错误,这个问题只在生产中。还检查了 pm2 日志和 Nginx 日志,但没有用。谁能向我解释我面临的问题是什么?我是 Nodejs 的初学者,无法解决这个问题。

4

0 回答 0