文章問題導向
nest如何開啟定時任務?
如果你都有了答案,可以忽略本文章,或去nest學習導圖尋找更多答案
定時任務場景
每天定時更新,定時發送郵件
沒有controller,因為定時任務是自動完成的
第一步:安裝
yarn add @nestjs/schedule
第二步:編寫
src -> tasks
task.module.ts
import { Module } from '@nestjs/common';
import { TasksService } from './tasks.service';
@Module({
providers: [TasksService],
})
export class TasksModule {}
task.service.ts
在這裡編寫你的定時任務
import { Injectable, Logger } from '@nestjs/common';
import { Cron, Interval, Timeout } from '@nestjs/schedule';
@Injectable()
export class TasksService {
private readonly logger = new Logger(TasksService.name);
@Cron('45 * * * * *') 每隔45秒執行一次
handleCron() {
this.logger.debug('Called when the second is 45');
}
@Interval(10000) 每隔10秒執行一次
handleInterval() {
this.logger.debug('Called every 10 seconds');
}
@Timeout(5000) 5秒隻執行一次
handleTimeout() {
this.logger.debug('Called once after 5 seconds');
}
}
自定義定時時間
* * * * * * 分别對應的意思:
第1個星:秒
第2個星:分鐘
第3個星:小時
第4個星:一個月中的第幾天
第5個星:月
第6個星:一個星期中的第幾天
如:
45 * * * * *:每隔45秒執行一次
第三步:挂載-使用
app.module.ts
import { TasksModule } from './tasks/task.module';
import { ScheduleModule } from '@nestjs/schedule';
imports: [
ConfigModule.load(path.resolve(__dirname, 'config', '**/!(*.d).{ts,js}')),
StatusMonitorModule.setUp(statusMonitorConfig),
ScheduleModule.forRoot(),
TasksModule,
],
學習更多
nest學習導圖