簡體   English   中英

是否建議使用Node.js中的cron作業的子進程?

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

我有一個Express服務器作為我的React應用程序的后端。 每個用戶每周應收到一封電子郵件。 我查看了Node中的cron作業是如何完成的,這似乎很簡單。 我只是設置一個cron作業來觸發相應的功能,該功能遍歷所有電子郵件地址並發送郵件。 但是,我不確定這是否可行。

發送電子郵件時,服務器必須存儲已發送的收據。 為此,它將電子郵件地址傳遞給相應的API,然后等待收據將其存儲在DB中。 因此,每位用戶發送電子郵件可能需要幾分鍾。

現在,我想知道是否為此任務設置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);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM