前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【Nest教程】Nest项目增加定时任务

【Nest教程】Nest项目增加定时任务

作者头像
青年码农
发布2021-02-03 11:15:45
4.8K0
发布2021-02-03 11:15:45
举报
文章被收录于专栏:青年码农青年码农

定时任务对于项目来说,也是必不可少的,今天就来说一说在Nest项目中集成定时任务

Nest框架有实现定时任务的库@nestjs/schedule,官方教程参照:

https://docs.nestjs.com/techniques/task-scheduling

1 安装

首先安装依赖库

代码语言:javascript
复制
$ npm install --save @nestjs/schedule
$ npm install --save-dev @types/cron

yarn安装也可以,我项目上使用的是yarn,如果npm安装完成项目运行报错,可以用yarn在重新安装一遍

2 添加到app.module

代码语言:javascript
复制
import { Module } from '@nestjs/common';
import { ScheduleModule } from '@nestjs/schedule';

@Module({
  imports: [
    ScheduleModule.forRoot()
  ],
})
export class AppModule {}

3 使用

这里只演示,具体使用请根据项目,src下新建schedule文件夹,文件夹内新建tasks.service.ts,

代码语言:javascript
复制
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中添加

代码语言:javascript
复制
import { Module } from '@nestjs/common';
import { TasksService } from './schedule/tasks.service';
@Module({
  providers: [AppService, TasksService],
})

运行项目

定时任务已启动

4 其他模式

还有一些其他模式,

  • * * * * * *:每一秒
  • 45 * * * * *:每分钟,在45秒
  • * 10 * * * *:每小时一次,十分钟开始
  • 0 */30 9-17 * * *:上午九时至下午五时,每三十分钟一次
  • 0 30 11 * * 1-5:星期一至星期五上午11:30
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-01-28,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 青年码农 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档