node.js - 嵌套计划 npm 不工作
问题描述
我正在使用nest.js 框架来开发基于节点的应用程序。我正在尝试使用https://www.npmjs.com/package/nest-schedule中提到的 nest-schedule 编写调度程序。
不知何故,当与@Cron 或@Schedule 一起使用时,代码不起作用。休息其他装饰器工作正常。使用与上面链接中提到的相同的代码库。任何人都可以帮助我设置它并使用 nodejs 中使用的确切 cron 模式
解决方案
对于当前版本的 Nest,您可以使用 nestjs/schedule。看看我是如何使用 nestjs/schedule 实现的。
第一:安装nestjs cli
npm i -g @nestjs/cli
第二:新建项目
nest new schedule-sample
第三:安装nestjs时间表
npm install --save @nestjs/schedule
4th:生成一个新的服务来放置你的服务。
nest generate service cron
安装包后,将其添加到 app.module 中,如下所示:
import { Module } from '@nestjs/common';
import { ScheduleModule } from '@nestjs/schedule';
从“@nestjs/common”导入 { Logger };
@Module({
imports: [
ScheduleModule.forRoot()
],
})
export class AppModule {}
5th:你可以运行它如下所示(完整的说明在这里https://docs.nestjs.com/techniques/task-scheduling):
@Cron('*/5 * * * * *')
runEvery10Seconds() {
console.log('Run it every 5 seconds');
}
这是完整的示例 (cron.service.ts)。
从“@nestjs/common”导入 { Logger };从'@nestjs/common'导入{可注射};从“@nestjs/schedule”导入 { Cron, Interval };
@Injectable()
export class CronService {
private readonly logger = new Logger(CronService.name);
@Cron('*/5 * * * * *')
runEvery10Seconds() {
this.logger.debug('Run it every 5 seconds');
}
@Cron('10 * * * * *')
handleCron() {
this.logger.debug('Called when the current second is 10');
}
@Interval(10000)
handleInterval() {
this.logger.debug('Called every 10 seconds');
}
}
最后的想法:
安排作业的最复杂的方法是使用动态 cron 作业。为此,您可以使用 SchedulerRegistry API 从代码中的任何位置按名称获取对 CronJob 实例的引用。首先,使用标准构造函数注入注入 SchedulerRegistry:
constructor(private schedulerRegistry: SchedulerRegistry) {}
提示从 @nestjs/schedule 包中导入 SchedulerRegistry。然后在一个类中使用它,如下所示。假设使用以下声明创建了一个 cron 作业:
@Cron('* * 8 * * *', {
name: 'notifications',
})
triggerNotifications() {}
使用以下命令访问此作业:
const job = this.schedulerRegistry.getCronJob('notifications');
job.stop();
console.log(job.lastDate());
我已经在以下版本(package.json)中对其进行了测试
"@nestjs/common": "^7.6.15",
"@nestjs/core": "^7.6.15",
"@nestjs/schedule": "^0.4.3",
推荐阅读
- android - 改造:在应用程序启动时存储和加载不同的基本 url(由用户设置)的最佳方式是什么?
- python - 添加父窗口 Tkinter
- apache-kafka - docker中的本地kafka,具有事务支持
- arrays - C如何解析char数组中的int和char?
- c# - 要实施哪些 Google API 来访问不同云端硬盘位置的文件?
- python - 使用从其他脚本导入函数的 .bat 运行 python 脚本
- python - 在反汇编的一条指令中创建空集
- php - 使用 PHP,我如何在我知道关键的元素之前获取元素
- java - 无法确定任务“:app:processDebugManifest”的依赖关系
- c - 为什么我的 hello world 二进制文件大多为零?