我正在开发Angular(前端)和NodeJS(API)应用程序。我想在特定日期安排电子邮件,而无需任何外部呼叫。我探讨了节点计划。但是,我应该如何确保它在NodeJs API中永久运行?就像我应该将代码放在哪里-放在app.js或给它路由?
答案 0 :(得分:1)
听起来像nodeCron所能实现的。
您也可以看看答案here
您可以调整计划程序以在
之类的特定时间执行var schedule = require('node-schedule');
var j = schedule.scheduleJob('42 * * * *', function(){
console.log('The answer to life, the universe, and everything!');
});
上面的示例来自node-cron npm page。请看看它们的github,以便更好地理解。
答案 1 :(得分:1)
您处在正确的轨道上。您必须为此使用cron服务。而node-schedule
是一个不错的选择。
因此,首先创建一个名为email-service.js
的文件。
这就是你的逻辑。
email-service.js
var node = require('node-schedule');
var sendEmail = node.scheduleJob('0 6 * * *', function(){
console.log('Starting..');
init(); // write your logic here to send email
});
function init() {
console.log('Your logic goes here.');
}
module.exports = {
cronService: cronService
}
app.js
在app.js中,导入email-service.js
。
const emailService = require('email-service')
emailService.sendEmail.start(); // start service..
您可以相应地安排cron。下面是cron的格式。
The cron format consists of:
* * * * * *
┬ ┬ ┬ ┬ ┬ ┬
│ │ │ │ │ │
│ │ │ │ │ └ day of week (0 - 7) (0 or 7 is Sun)
│ │ │ │ └───── month (1 - 12)
│ │ │ └────────── day of month (1 - 31)
│ │ └─────────────── hour (0 - 23)
│ └──────────────────── minute (0 - 59)
└───────────────────────── second (0 - 59, OPTIONAL)
答案 2 :(得分:0)
您可以使用节点计划节点模块,它有据可查。
答案 3 :(得分:0)
我们使用PM2(https://pm2.io/runtime/)-这是一个流程管理器,它可以使您的流程保持运行并进行配置,以使您可以安排节点作业根据cron计划运行。还有很多其他功能,但是如果您想改善API的操作,那么此工具确实不错-免费。
答案 4 :(得分:0)
还有一件事,如果应用程序重新启动,则您的计划事件将被取消。因此,如果您将事件保存在数据库中并标记为已完成或未完成,那么这可能是一个好方法。并在应用程序重新启动时重新安排您的未完成事件。
我用它来确保所有事件都在运行。