这是我的代码我试图创建一个电子邮件调度
router.post(`/blogs`, async (req, res) => {
let mailTransporter = nodemailer.createTransport({
service: "gmail",
auth: {
user: process.env.GOOGLE_APP_EMAIL,
pass: process.env.GOOGLE_APP_PW
}
});
const data = {
to: `${req.body.to}`,
second: `${req.body.second}`,
minute: `${req.body.minute}`,
};
const task = cronJob.schedule(`*/${data.minute}`, () => {
mailTransporter.sendMail(data, err => {
});
})
task.stop();
});
每次我设置的时间超过30秒,我得到
"Process timed out after 30 seconds"
从我部署的服务器上的日志,这意味着我的响应被延迟到后端,所以我问有没有一种方法,我可以设置一个加载程序,以保持服务器旋转之前,我的请求被提出,所以避免得到一个30秒的错误
1条答案
按热度按时间oprakyz71#
我建议改变很多东西,特别是将数据存储在当前运行进程之外的其他地方,但我会尽可能接近您的问题。
你超时是因为你从来没有响应过。这与你使用的cron库无关。
你当然可以在express中设置超时,但这是一个非常糟糕的主意,除非你知道你在做什么,以及它会对其他进程产生什么影响。此外,为什么你要设置一个cron并等待它完成,这毫无意义。