首页 文章

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

提问于
浏览
0

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

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

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

如果你能给我一些一般的建议和可能的例子,那将是很好的,所以我知道如何开始 . 感谢您的时间 .

1 回答

  • 1

    正如this answer中所建议的那样,它不应该是阻塞的 .

    但是,我认为最好不要在主服务器文件上使用像这样的繁重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);
    

相关问题