egg.js中编写只执行一次的定时任务
时间: 2024-10-12 14:07:45 浏览: 28
关于自定义Egg.js的请求级别日志详解
在 Egg.js 中,你可以使用 `app_worker` 功能来编写只执行一次的定时任务,因为 `app_worker` 提供了一种异步的工作进程模型,可以让你在启动时运行一次性任务。这里是一个简单的例子:
```javascript
// app/controller/worker.js
const { Worker } = require('egg-worker');
class OneTimeTaskWorker extends Worker {
async boot() {
// 这里编写一次性任务,比如初始化数据库、发送邮件等
await this.emit('onceTask', 'This task will run only once when the worker starts up.');
// 完成后,你可以选择关闭工作进程,它会自动退出
this.stop();
}
}
module.exports = OneTimeTaskWorker;
```
然后在应用配置文件 `config/worker.js` 中启用这个工作进程:
```javascript
exports.worker = {
enable: true,
workers: 1, // 只创建一个进程
executors: {
oneTimeTask: OneTimeTaskWorker, // 使用自定义的 OneTimeTaskWorker
},
};
```
启动应用时,这个一次性任务会在工作进程启动的时候被执行。
阅读全文