2017-05-23 4 views
3

node-cron 패키지로 작업하는 NodeJS 기반 크롤러를 만들었습니다. 응용 프로그램을 cron으로 영원히 실행해야하고 로그가있는 특정 기간에 크롤러를 실행하므로 엔트리 스크립트가 종료되지 않도록해야합니다.NodeJS 프로그램이 종료하지 못하도록

웹 응용 프로그램에서 서버는 수신 대기하고 종료를 방지하지만 서버가없는 응용 프로그램에서는 모든 코드가 실행 된 후 프로그램을 종료하고 cron을 기다리지 않습니다.

루프를 쓰려면 while(true)을 써야합니까? 이 목적을위한 노드의 모범 사례는 무엇입니까?

미리 감사드립니다.

답변

4

nodejs가 단일 스레드이기 때문에 while(true)이 작동하지 않습니다. 그것은 단지 전체 CPU를 잡을 것이고 다른 어떤 것도 실행할 수 없습니다.

nodejs는 앞으로 실행할 수있는 것이 살아있을 때 계속 실행됩니다. 여기에는 열려있는 TCP 소켓, 청취 서버, 타이머 등이 ​​포함됩니다.

더 구체적으로 대답하려면 코드를보고 node-cron을 사용하는 방법을 확인해야하지만 nodejs 프로세스를 추가 간단한 setInterval() 이와 같은 :

setInterval(function() { 
    console.log("timer that keeps nodejs processing running"); 
}, 1000 * 60 * 60); 

그러나 당신이 제대로 노드 크론을 사용하고있는 경우 제대로 다음, 당신의 nodejs을 미래에 실행하도록 예약 된 작업을 가지고 나타나도록, 노드 크론 자체는 타이머를 사용 프로세스가 멈추지 않아야합니다. 따라서 여러분의 실제 문제는 node-cron을 사용하여 미래의 작업을 올바르게 계획하고 있지 않다는 것입니다. node-cron을 사용하는 실제 코드를 보여줄 때만 문제를 해결할 수 있습니다.

+0

모듈에 대해 잘못된 경로를 사용했기 때문에 내 cron이 실행되지 않았습니다. 자동으로 종료되었지만 오류가 표시되지 않았지만 경로에 대해 'glob'를 사용하고 있습니다. –