【问题标题】:Are child processes for cron jobs in Node.js recommended?是否推荐 Node.js 中 cron 作业的子进程?
【发布时间】:2019-05-10 08:47:07
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: javascript node.js express child-process


    【解决方案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);
    

    【讨论】:

      猜你喜欢
      • 2023-04-07
      • 1970-01-01
      • 2021-11-30
      • 2022-09-23
      • 1970-01-01
      • 2012-09-13
      • 1970-01-01
      • 2021-10-27
      • 1970-01-01
      相关资源
      最近更新 更多