[Node.js] Nest.js 에서 sleep 사용하기

강준혁·2021년 5월 12일
0

최근 개발하다가 발생한 이슈를 기록용으로 적어보고자 한다.

nestjs 에서 특정 endpoint 의 Service 단에서 sleep 을 써야 할 필요성이 있었다.

그래서 아무 생각없이 sleep 을 쓰고 잘 돌아가는것을 확인하였으나...

sleep 에 걸려있는동안 동일한 endpoint 에 요청이 들어왔을 때 이전 작업이 종료되기 전 까지

새로운 요청이 시작조차 하지 못하는 현상이 발견되었다. (다른 endpoint 는 잘 동작한다)

아마도 이건 nestjs 특성상 각각의 endpoint 처리를 담당하는 클래스가 싱글톤으로 띄워져있고,

이 때문에 해당 클래스의 event loop 가 절전되어 발생하는 현상으로 추정된다.

이 경우, nestjs 의 @Res 데코레이터를 통해서 Response 객체를 컨트롤러의 파라메터로 추가한 뒤,

sleep 이 들어가기 전 단계에서 Response.send() 함수를 통해 리턴을 해버리면,

sleep 동작과 이후 요청이 병렬로 처리되는 것을 볼 수 있었다.

profile
백엔드 개발자

0개의 댓글