Node.js 环回4个cron/计划任务
我想为我的环回4 API运行计划任务。我可以使用node-cron或node-schedule等包非常轻松地使用node设置计划任务 我的问题是,我应该在我的环回4 API中的何处以及如何实现这段代码? 我的想法是编写一个自定义引导程序,它将在环回API“引导”时发现并运行cron逻辑。但是我不确定我是否走上了正确的道路。Node.js 环回4个cron/计划任务,node.js,loopbackjs,loopback,Node.js,Loopbackjs,Loopback,我想为我的环回4 API运行计划任务。我可以使用node-cron或node-schedule等包非常轻松地使用node设置计划任务 我的问题是,我应该在我的环回4 API中的何处以及如何实现这段代码? 我的想法是编写一个自定义引导程序,它将在环回API“引导”时发现并运行cron逻辑。但是我不确定我是否走上了正确的道路。 我们有完全相同的任务,并按照您描述的方式完成,即我们在启动脚本中初始化基于任务。它工作得非常好 在No.js:任务中,您可能需要考虑一些事情。 如果计划运行节点应用程序的多
我们有完全相同的任务,并按照您描述的方式完成,即我们在启动脚本中初始化基于任务。它工作得非常好
在No.js:
任务中,您可能需要考虑一些事情。- 如果计划运行节点应用程序的多个实例(例如使用pm2或其他工具),则可能需要确保任务只在一个主节点上运行,而不是同时在所有节点上运行。如果主节点出现故障,则必须选择下一个节点作为新的主节点。根据业务逻辑,在您的情况下,这可能不是问题。在我们的案例中,它是强制性的,我们设法在PG中使用建议锁来实现它(我们使用了PG_尝试_建议_xact_锁和PG_建议_xact_锁的组合)
- 您可能希望实现一个选项来停止/启动任务,并通过环回API/环回资源管理器查看其状态。我们在Loopback中创建了一些定制的API方法来实现这一点,并发现它非常有用
https://www.npmjs.com/package/node-cron
$ npm install --save node-cron
import { CronController } from "./controller/cron.controller";
const cron = require('node-cron');
export class Cron {
constructor(
protected cronController: CronController,
) {
}
async start() {
this.eachMinute();
}
private async eachMinute() {
console.log('Start Cron Jobs');
cron.schedule('* * * * *', async () => {
await this.cronController.start();
console.log('running a task every minute');
});
}
}
// index.ts
export async function main(options: ApplicationConfig = {}) {
const app = new MyApplication(options);
await app.boot();
await app.start();
const url = app.restServer.url;
console.log(`Server is running at ${url}`);
console.log(`Try ${url}/ping`);
// Instanciate CronController
const cronController = app.controller(CronController);
// Get Instance
const cronControllerInstance = await cronController.getValue(app);
// Inject by constructor
const cron = new Cron(cronControllerInstance);
// Invoke method
cron.start();
return app;
}