是否推荐 Node.js 中的 cron 作业的子进程?

Are child processes for cron jobs in Node.js recommended?

我有一个快速服务器作为我的 React 应用程序的后端。每个用户每周应收到一封电子邮件。我查看了 Node 中的 cron 作业是如何完成的,它似乎非常简单。我只想设置一个触发相应功能的 cron 作业,该功能循环遍历所有电子邮件地址并发送邮件。但是,我不完全确定这是否可行。

发送电子邮件时,服务器必须存储已发送的回执。为此,它将一个电子邮件地址传递给相应的 API 并等待收据将其存储在数据库中。因此,每位用户发送一封电子邮件可能需要几分钟时间。

现在我想知道是否为此任务设置一个 cron 作业会阻塞我的整个服务器,直到发送完所有电子邮件。是否建议创建一个由 cron 作业触发的子进程来循环遍历所有电子邮件地址?

如果你能给我一些一般性的建议和示例,那就太好了,这样我就知道如何开始了。谢谢你的时间。

中所建议,不应阻塞。

但是,我认为最好不要在主服务器文件上使用像这样繁重的 cron 作业。如果可以,您应该 运行 一个单独的 node.js 应用程序,它只会处理 cron 作业。

子进程不应该用于你可以轻松处理 JS 的东西。您应该为特定任务保留它们,例如数据库备份。

var exec = require('child_process').exec;
var CronJob = require('cron').CronJob;

new CronJob('00 14 * * 4', function() {
  sendNewsletter();
}, null, true);

new CronJob('00 12 * * *', function() {
  exec('sh dbbackup.sh', function(err, stdout, stderr){
    if (err) {
        // handle error
    }
  });
}, null, true);