定時任務對於項目來講,也是必不可少的,今天就來講一說在Nest項目中集成定時任務npm
Nest框架有實現定時任務的庫@nestjs/schedule,官方教程參照:
https://docs.nestjs.com/techniques/task-schedulingapp
1 安裝
首先安裝依賴庫框架
$ npm install --save @nestjs/schedule $ npm install --save-dev @types/cron
yarn安裝也能夠,我項目上使用的是yarn,若是npm安裝完成項目運行報錯,能夠用yarn在從新安裝一遍ide
2 添加到app.modulethis
import { Module } from '@nestjs/common'; import { ScheduleModule } from '@nestjs/schedule'; @Module({ imports: [ ScheduleModule.forRoot() ], }) export class AppModule {}
3 使用
這裏只演示,具體使用請根據項目,src下新建schedule文件夾,文件夾內新建tasks.service.ts,debug
import { Injectable, Logger } from '@nestjs/common'; import { Cron, Interval, Timeout } from '@nestjs/schedule'; @Injectable() export class TasksService { private readonly logger = new Logger(TasksService.name); constructor(private readonly exampleService: ExampleService) {} @Cron('45 * * * * *') handleCron() { this.logger.debug('該方法將在45秒標記處每分鐘運行一次'); } @Interval(10000) handleInterval() { this.logger.debug('2'); } @Timeout(5000) handleTimeout() { this.logger.debug('3'); } @Interval(10000) sendEmail() { this.logger.debug('3'); } }
在app.module providers中添加code
import { Module } from '@nestjs/common'; import { TasksService } from './schedule/tasks.service'; @Module({ providers: [AppService, TasksService], })
運行項目blog
定時任務已啓動教程
4 其餘模式get
還有一些其餘模式,
45 *:每分鐘,在45秒
0 /30 9-17 :上午九時至下午五時,每三十分鐘一次