我添加了两个 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 的初学者,无法解决这个问题。