2017-11-26 2 views
1

구성에 따라 실행되는 cron 작업 배열을 메모리에 유지해야합니다. 현재 config 데이터를 데이터 저장소의 레코드로 가져 와서 cron 작업 배열을 초기화하고 있습니다. 그런 다음 레코드를 트래버스하여 각 레코드의 정보를 기반으로 cron 작업을 만듭니다. cron 작업이 생성되면 스크립트 수준의 배열로 메모리에 저장됩니다.노드 Cron 작업 배열을 메모리에서 계속 실행하는 가장 좋은 방법

다음은 작업을 수행하는 코드입니다.

const arrCronJobs = []; 

function populateEnvVarCronJobs() { 
    console.log('populating crons'); 
    return dataHelper.getCronJobs() 
    .then((results) => { 
     // Task entities found. 
     const jobs = results[0]; 
     jobs.forEach((job) => { 
      const rtn = configCron(job); 
      if (rtn) { 
       console.log(`adding job: ${rtn}`); 
       arrCronJobs.push(rtn); 
      } 
     }); 
     return arrCronJobs; 
     }) 
     .catch(e => { 
     console.log(e); 
     });} 

//initialize the array of Cron jobs 

populateEnvVarCronJobs() 
.then(result => { 
    console.log(result); 
}); 

모든 것을 메모리로 유지하는 방법은 그냥 계속 듣고있는 HTTP 서버를 만드는 것입니다.

const server = http.createServer(function(req, res) { 
/* Listener handler behavior...... */}); 

server.listen(port); 

내 질문은 : HTTP 서버를 사용하여 Cron 작업 배열을 메모리에 활성 상태로 유지하는 것이 가장 좋은 방법일까요? 아니면 내가 본 다른 위험을 내게 보이지 않는다면 다른 접근법을 취하는 것이 더 나을 것입니다.

미리 감사드립니다. 나는 사려 깊은 반응을 읽을 것을 기대합니다.

답변

0

유일한 실제 문제는 아무런 이유없이 포트에서 노드 응용 프로그램을 노출하는 것입니다 (그리고 해당 포트 사용). 보안을 위해 포트를 임의로 수신하지 마십시오. 악의적 인 공격을받을 수 있습니다.

forever과 같은 패키지를 사용하는 것이 더 적절할 것이므로 ontime 패키지를 사용하여 cron과 같은 방식으로 작업을 예약 할 수도 있습니다.

희망이 도움이됩니다.

+0

대단합니다! 고맙습니다! – reselbob

관련 문제