Задача по интервалу в Nest
Фоновая проверка списка должна идти каждые несколько секунд, пока сервер запущен, но отдельного запроса для неё нет. Вынести цикл в скрипт вне Nest неудобно: классы приложения и внедрение там недоступны.
Пакет @nestjs/schedule
подключают в корневом модуле
через ScheduleModule.forRoot.
Метод провайдера помечают
@Interval с длительностью
в миллисекундах. После полной
загрузки приложения планировщик
сам начнёт вызывать этот метод
снова и снова.
Покажем на примере постов:
import { Injectable } from '@nestjs/common';
import { Interval } from '@nestjs/schedule';
@Injectable()
export class PostTasksService {
@Interval(5000)
handleInterval() {
console.log('Post list tick');
}
}
Класс записывают в провайдеры, модуль планировщика добавляют в импорты:
import { Module } from '@nestjs/common';
import { ScheduleModule } from '@nestjs/schedule';
import { PostTasksService } from './post.tasks.service.js';
@Module({
imports: [ScheduleModule.forRoot()],
providers: [PostTasksService],
})
export class AppModule {}
Подключите планировщик в корневом
модуле и оформите повторяющийся
шаг для списка работников
в WorkerTasksService,
чтобы в журнал уходила одна
строка при каждом срабатывании.