AI, nestjs의 Task Scheduling 활용하기!
익스랩 최고 관리자
·2023. 3. 3. 12:51
nestjs의 Task Scheduling이 뭐야?
NestJS에서 제공하는 Task Scheduling 모듈은 cron job을 쉽게 관리할 수 있는 기능을 제공합니다. cron job은 특정 시간 간격으로 실행되는 작업을 의미하는데, 이를 사용하여 백그라운드 작업 등을 자동으로 수행할 수 있습니다.
NestJS의 Task Scheduling 모듈은 간편한 구성과 편리한 사용성을 제공합니다. 특히, 각 모듈에서 직접적으로 Task Scheduling 기능을 사용할 수 있도록 내장된 인터페이스를 제공합니다. 또한, NestJS의 의존성 주입(Dependency Injection) 기능을 이용하여, Task Scheduling 기능을 사용하는 다른 모듈과의 연동이 쉽습니다.
또한 Task Scheduling 모듈은 강력한 로깅 및 오류 처리 기능을 제공하며, 실행 중인 작업의 상태를 모니터링할 수 있습니다. 이를 통해 Task Scheduling 기능의 안정성과 신뢰성을 보장할 수 있습니다.
따라서 NestJS의 Task Scheduling 모듈은 간편하게 cron job을 구성하고 실행할 수 있는 기능을 제공하여, 백그라운드 작업을 처리하는 데 매우 유용합니다.
매일 12시에 DB의 값을 체크하는 기능을 만들고 싶은데 Task Scheduling 기능을 사용해야할까?
네, 매일 12시에 DB의 값을 체크하는 것은 Task Scheduling 모듈을 사용하여 구현할 수 있습니다. 이를 위해 cron job을 설정하고, 해당 cron job에서 DB 값을 체크하고 필요한 작업을 수행하면 됩니다.
NestJS의 Task Scheduling 모듈을 사용하면 cron job을 쉽게 설정할 수 있으며, 설정된 시간에 실행되도록 자동으로 처리됩니다. 따라서 매일 12시에 DB 값을 체크하는 것도 Task Scheduling 모듈을 사용하여 구현하는 것이 좋습니다.
어떻게 만들어야할까?
먼저, Task Scheduling 모듈을 사용하기 위해서는 @nestjs/schedule 모듈을 설치해야 합니다.
npm install --save @nestjs/schedule
다음으로, app.module.ts 파일에서 ScheduleModule을 임포트하고 모듈에 추가합니다.
import { Module } from '@nestjs/common';
import { ScheduleModule } from '@nestjs/schedule';
@Module({
imports: [ScheduleModule.forRoot()],
controllers: [],
providers: [],
})
export class AppModule {}
이제 Task Scheduling 모듈을 사용하여 매일 12시에 MySQL의 값을 체크하는 예제 코드를 작성해보겠습니다.
이 예제에서는 mysql2 모듈을 사용하여 MySQL에 연결합니다.
import { Injectable, Logger } from '@nestjs/common';
import { Cron } from '@nestjs/schedule';
import * as mysql from 'mysql2/promise';
@Injectable()
export class CheckDbValueService {
private readonly logger = new Logger(CheckDbValueService.name);
@Cron('0 0 12 * * *') // 매일 12시에 실행
async checkDbValue() {
try {
const connection = await mysql.createConnection({
host: 'localhost',
user: 'user',
password: 'password',
database: 'database_name',
});
const [rows, fields] = await connection.execute('SELECT * FROM table_name');
// 체크 로직 수행
await connection.end();
this.logger.debug('DB 값을 체크했습니다.');
} catch (error) {
this.logger.error(`DB 값을 체크하는 중 오류가 발생했습니다. 오류 내용: ${error.message}`);
}
}
}
위 코드에서 checkDbValue() 메서드에 @Cron() 데코레이터가 적용되어 있습니다.
@Cron() 데코레이터의 첫 번째 인자는 cron job 패턴을 나타냅니다.
이 예제에서는 0 0 12 * * * 패턴을 사용하여 매일 12시에 실행되도록 설정하였습니다.
checkDbValue() 메서드에서는 mysql2 모듈을 사용하여 MySQL에 연결하고, SELECT 쿼리를 실행하여 DB 값을 가져옵니다. 이후 체크 로직을 수행하고, 연결을 종료합니다.
마지막으로, 이 서비스를 사용하기 위해 app.module.ts 파일에서 해당 서비스를 추가합니다.
import { Module } from '@nestjs/common';
import { ScheduleModule } from '@nestjs/schedule';
import { CheckDbValueService } from './check-db-value.service';
@Module({
imports: [ScheduleModule.forRoot()],
controllers: [],
providers: [CheckDbValueService],
})
export class AppModule {}
위와 같이 작성하면, 매일 12시에 checkDbValue() 메서드가 실행되어 MySQL의 값을 체크하게 됩니다.
'감사합니다'
'Forum of AI' 카테고리의 다른 글
AI, 블로그의 퀄리티를 올리는 방법을 알려줘!! (0) | 2023.03.06 |
---|---|
AI, 2023년 봄 패션 트렌드: 당신이 사랑하게 될 친환경 스타일 첫번째 이야기 (0) | 2023.03.05 |
AI, 비건 식단으로도 건강하게 살 수 있을까? (0) | 2023.03.03 |
AI, 국제 여성의 날은 어떤 날이야? (0) | 2023.03.02 |
AI Drawing, How Machines Are Becoming Creative (0) | 2023.02.28 |